7146 lines
393 KiB
C#
7146 lines
393 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
|
|
using Cosmos.Common;
|
|
using Cosmos.BaseFrame;
|
|
using Cosmos.UserFrame;
|
|
using Cosmos.CommonManager;
|
|
using Cosmos.ServiceProvider;
|
|
|
|
using Newtonsoft.Json;
|
|
using System.Xml;
|
|
using System.IO;
|
|
using System.Net;
|
|
using System.Runtime.InteropServices;
|
|
|
|
/*-----------------------------------------------------------------------------------------------*/
|
|
// 설 명 : 통신서버로
|
|
// 01:Tran/02:저널/03:서명/04:전자영수증/05:현금IC/06:기타서명 데이터 100ms간격, 전송
|
|
// 실패시 에러카운트증가시켜 1회 이상부터 5초로 조정.
|
|
// 실패시 에러카운트증가시켜 5회 이상부터 1분으로 조정.
|
|
// 성공시 에러카운트감소시켜 0으로 초기화 되면 다시 100ms로 조정.
|
|
// 전송할 데이터 없을 시 5초로 조정.
|
|
// 작 성 자 :
|
|
// 변경 이력 :
|
|
/*-----------------------------------------------------------------------------------------------*/
|
|
namespace Cosmos.Network
|
|
{
|
|
public class NetworkTranSend : INetworkTranSend
|
|
{
|
|
#region 한국공항공사 I/F 관련 MKACCLT.dll 함수정의
|
|
///// <summary>
|
|
///// 프로그램 시작
|
|
///// </summary>
|
|
///// <returns></returns>
|
|
//[DllImport("MKACCLT.dll")]
|
|
//public static extern int MKACCLTOpen();
|
|
///// <summary>
|
|
///// 매출저장
|
|
///// </summary>
|
|
///// <param name="pSendType">매출구분(4)</param>
|
|
///// <param name="pConNo">계약구분(10)</param>
|
|
///// <param name="pSaleDt">영업일자(8)</param>
|
|
///// <param name="pStorCd">매장정보(10)</param>
|
|
///// <param name="pPosNo">POS번호(10)</param>
|
|
///// <param name="pReceiptNo">영수증번호(30)</param>
|
|
///// <param name="sTranHeader">매출정보(Variable)</param>
|
|
///// <param name="iItemCount">아이템건수(4)</param>
|
|
///// <param name="sTranItem">아이템정보(Variable)</param>
|
|
///// <returns></returns>
|
|
//[DllImport("MKACCLT.dll")]
|
|
//public static extern int ReceiptDB(string pSendType, string pConNo, string pSaleDt, string pStorCd, string pPosNo, string pReceiptNo, string sTranHeader, int iItemCount, string sTranItem);
|
|
///// <summary>
|
|
///// 프로그램 종료
|
|
///// </summary>
|
|
///// <returns></returns>
|
|
//[DllImport("MKACCLT.dll")]
|
|
//public static extern int MKACCLTClose();
|
|
|
|
#endregion 한국공항공사 I/F 관련 MKACCLT.dll 함수정의
|
|
|
|
#region 클래스 변수 선언
|
|
/// <summary>
|
|
/// Sending Socket (전송 소켓)
|
|
/// </summary>
|
|
private static TcpSocket m_sendSocket = null;
|
|
|
|
/// <summary>
|
|
/// IP
|
|
/// </summary>
|
|
private string m_ServerIp = "";
|
|
|
|
/// <summary>
|
|
/// Port
|
|
/// </summary>
|
|
private int m_ServerPort = 0;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
private int m_ServerTimeout = 1;
|
|
|
|
protected SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
|
|
|
|
/// <summary>
|
|
/// StateServer Object (StateServer 객체)
|
|
/// </summary>
|
|
private StateServer StateObject = (StateServer)StateServer.GetInstance();
|
|
|
|
/// <summary>
|
|
/// POS Status Value (POS 상태값)
|
|
/// </summary>
|
|
private PosStatus m_cPosStatus = null;
|
|
|
|
|
|
//#20180322 휴게소pos매출연동 start,phj
|
|
private IDataCommonUs m_cDataCommon = null;
|
|
//#20180322 휴게소pos매출연동 end,phj
|
|
|
|
/// <summary>
|
|
/// IRT 통신
|
|
/// </summary>
|
|
private bool m_bIRTComplete = false; // 통신 완료 상태
|
|
Hashtable m_htRecvData = null; // 통신 수신 데이터 (JSON)
|
|
/// <summary>
|
|
/// Sending Socket (전송 소켓)
|
|
/// </summary>
|
|
private static TcpSocket m_IrtSocket = null;
|
|
|
|
/// <summary>
|
|
/// Thread Waiting Time (스레드 대기시간)
|
|
/// </summary>
|
|
private int m_ThreadSleepTerm = 100;
|
|
|
|
/// <summary>
|
|
/// Recv Timeout 정의
|
|
/// </summary>
|
|
//private int m_RecvTimeout = 10000;
|
|
|
|
/// <summary>
|
|
/// Server Send Operation Yes/No (SVR Send 작동여부)
|
|
/// </summary>
|
|
private bool m_TranSVRSendRunning = true;
|
|
|
|
/// <summary>
|
|
/// Server SEND Thread (Server SEND 스레드)
|
|
/// </summary>
|
|
private Thread m_tSVRSend = null;
|
|
/// <summary>
|
|
/// 전송할 데이터 건수가 0 일 때, 0 설정
|
|
/// </summary>
|
|
private int iSendDataCnt = 0;
|
|
/// <summary>
|
|
/// CommHeader 길이
|
|
/// </summary>
|
|
private int CommHeadLen = 0;
|
|
|
|
/// <summary>
|
|
/// TranSend 응답 에러발생이 지속될 경우 ThreadTerm을 조정하기 위함
|
|
/// <para>iErrorCount 가 5 이상이면 Thread Term을 1분으로 조정하며, 다시 0으로 돌아가면 1초로 조정</para>
|
|
/// </summary>
|
|
private int iErrorCount = 0;
|
|
|
|
private int iOldErrorCount = 0;
|
|
|
|
/// <summary>
|
|
/// 기동하면서 읽어 온 통신서버 IP
|
|
/// </summary>
|
|
private string sCommSvrIp = string.Empty;
|
|
|
|
/// <summary>
|
|
/// MSSQL DB 관련 객체
|
|
/// </summary>
|
|
private static SqlDB sqlDb = null;
|
|
|
|
///// <summary>
|
|
///// 고속도로 휴게소 POS 매출DATA 전송 URL
|
|
///// </summary>
|
|
//private string sExTranUrl = string.Empty;
|
|
|
|
///// <summary>
|
|
///// 고속도로 휴게소 POS 정산DATA 전송 URL
|
|
///// </summary>
|
|
//private string sExCalcUrl = string.Empty;
|
|
|
|
#endregion
|
|
|
|
#region 생성자
|
|
public NetworkTranSend()
|
|
{
|
|
m_cPosStatus = (PosStatus)StateObject.POS;
|
|
CommHeadLen = ItemColumn.LenMessage(Column.COMM_HEADER.LEN);
|
|
|
|
//#20180322 휴게소pos매출연동 end,phj
|
|
CommHeadLen = ItemColumn.LenMessage(Column.COMM_HEADER.LEN);
|
|
//m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
|
|
|
|
//#20180322 휴게소pos매출연동 start,phj
|
|
m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
|
|
//#20180322 휴게소pos매출연동 end,phj
|
|
}
|
|
#endregion
|
|
|
|
#region TranSend Thread Start/Stop
|
|
/// <summary>
|
|
/// Server Send Thread Start
|
|
/// </summary>
|
|
public void StartTranSend()
|
|
{
|
|
this.sCommSvrIp = m_cPosStatus.Base.CommSvrIp;
|
|
|
|
sqlDb = new SqlDB(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword);
|
|
|
|
//SetExUrl();
|
|
|
|
// 한국공항공사 매출 I/F 프로그램 실행
|
|
//if (m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_KOR_02)
|
|
//{
|
|
// int iRet = MKACCLTOpen();
|
|
// if(iRet == 0)
|
|
// {
|
|
// UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
// UserCom.WARNING_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 (함수명))
|
|
// "* 공항공사 MKACCLT.dll [ MKACCLT.dll Open Call. ]");
|
|
// }
|
|
//}
|
|
|
|
m_tSVRSend = new Thread(new ThreadStart(ThreadSVRSendRun));
|
|
m_TranSVRSendRunning = true;
|
|
m_tSVRSend.Start();
|
|
}
|
|
|
|
/// <summary>
|
|
/// NetworkTranSend Thread Stop시 처리
|
|
/// </summary>
|
|
public void StopTranSend()
|
|
{
|
|
try
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
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 (함수명))
|
|
"NetworkTranSend Service Stop!!!");
|
|
// 통신서버 Send Terminated (SC Send 종료)
|
|
m_TranSVRSendRunning = false;
|
|
|
|
int count = 0;
|
|
while (count < 10)
|
|
{
|
|
if (m_tSVRSend != null && m_tSVRSend.IsAlive) m_TranSVRSendRunning = false;
|
|
else break;
|
|
|
|
count++;
|
|
Thread.Sleep(300);
|
|
}
|
|
|
|
if (count >= 10)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
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 NetworkTranSend Service Stop!!!");
|
|
m_tSVRSend.Abort();
|
|
}
|
|
|
|
// DB Close
|
|
sqlDb.DBClose();
|
|
|
|
// 한국공항공사 매출 I/F 프로그램 종료
|
|
//if (m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_KOR_02)
|
|
//{
|
|
// int iRet = MKACCLTClose();
|
|
// if (iRet == 0)
|
|
// {
|
|
// UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
// UserCom.WARNING_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 (함수명))
|
|
// "* 공항공사 MKACCLT.dll [ MKACCLT.dll Close Call. ]");
|
|
// }
|
|
//}
|
|
}
|
|
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);
|
|
if (m_tSVRSend != null && m_tSVRSend.IsAlive)
|
|
m_tSVRSend.Abort();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
//#region 초기화
|
|
//private void SetExUrl()
|
|
//{
|
|
// try
|
|
// {
|
|
// CmMessage PosConfig = CmMessage.MakeMessageFromFile(BaseCom.NxIniPath + PosConst.INI_FILE_NAME.PosConfig);
|
|
|
|
// sExTranUrl = PosConfig.GetMessage("SERVER").GetMessageValue("ExTranUrl");
|
|
// sExCalcUrl = PosConfig.GetMessage("SERVER").GetMessageValue("ExCalcUrl");
|
|
|
|
// //if (string.IsNullOrWhiteSpace(sExTranUrl)) sExTranUrl = @"http://skhiway.com/SvrApp/SL000.java";
|
|
// //if (string.IsNullOrWhiteSpace(sExCalcUrl)) sExCalcUrl = @"http://skhiway.com/SvrApp/PS000.java";
|
|
// }
|
|
// 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);
|
|
// }
|
|
//}
|
|
//#endregion
|
|
|
|
#region TranSend Main
|
|
/// <summary>
|
|
/// Server Send Run
|
|
/// </summary>
|
|
private void ThreadSVRSendRun()
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
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 (함수명))
|
|
"ThreadSVRSendRun Run!!");
|
|
|
|
while(m_TranSVRSendRunning)
|
|
{
|
|
try
|
|
{
|
|
// 전송 데이터 건수 초기화
|
|
iSendDataCnt = 0;
|
|
|
|
#region 01 - 선불 또는 후불메인 일 경우에만 전송
|
|
if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.PRE_PAYMENT ||
|
|
(m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Base.PosCommunicationType == PosConst.MAIN_POS_DIV.MAIN_POS))
|
|
{
|
|
// 1 - TranLog Send (TranLog 전송)
|
|
this.TranLogSendProcess();
|
|
// 2 - Journal Send (Journal 전송)
|
|
this.JournalSendProcess();
|
|
// 3 - ApprovalLog Send (승인로그 전송)
|
|
this.ApprovalLogSendProcess();
|
|
// 4 - ETC TRAN Send (ETC TRAN 전송)
|
|
this.ETCTranLogSendProcess();
|
|
// 5 - ETC Journal Send (ETC Journal 전송)
|
|
this.ETCJournalSendProcess();
|
|
// 6 - Cashier Test Log Send (계산원 시험Log 전송)
|
|
this.CashierTestLogSendProcess();
|
|
// 외부업체 I/F 의 경우 실 OPEN 전 까지 주석 처리 함(20170213)
|
|
// 고속도로 휴게소 입점 POS
|
|
//if(m_cPosStatus.Base.ExPos == "1")
|
|
if (m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_KOR_01)
|
|
{
|
|
// 7 - 도로공사(고속도로 휴게소 입점POS) 매출 I/F XML 파일 생성
|
|
this.MakeTranToExProcess();
|
|
|
|
// 8 - 도로공사(고속도로 휴게소 입점POS) 매출 전송
|
|
//this.TranSendToExProcess();
|
|
}
|
|
|
|
//#20180322 휴게소pos매출연동 start,phj
|
|
else if (m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_KOR_03)
|
|
{
|
|
// 17 - 휴게소pos매출연동 I/F JSON 파일 생성
|
|
this.MakeTranToRestArea();
|
|
}
|
|
//#20180322 휴게소pos매출연동 end,phj
|
|
|
|
//else if (m_cPosStatus.Mst.ETC_IF_DIV == ItemConst.TranInterfaceOutside.IF_KOR_02)
|
|
//// 한국공항공사 관리 공항 입점 POS
|
|
//{
|
|
// // 9 - 한국공항공사 매출 전송
|
|
// this.TranSendToKacProcess();
|
|
//}
|
|
// 11. 점포점검 내역 전송
|
|
this.StoreCheckSendProcess();
|
|
|
|
// 12. 일일점검 내역 전송
|
|
this.StoreEquipCheckSendProcess();
|
|
|
|
// 13. Scale Log Send (Scale Log 전송)
|
|
this.ScaleLogSendProcess();
|
|
|
|
// 14. 보류 로그 이력 (ETC_HOLD_LOG 전송)
|
|
this.HoldLogSendProcess();
|
|
|
|
//#해피앱 추후적립 start, sskim
|
|
// 15. 해피앱 추후적립 내역 전송(TR_HPAPP_AFTER_SAVE 전송)
|
|
this.HpAppAfterSaveSendProcess();
|
|
//#해피앱 추후적립 end, sskim
|
|
|
|
//#20171120 유통기한 바코드 인식률 start, phj
|
|
// 16. 유통기한 바코드 인식률 전송 (TR_BAR_SUCESS_RATE 전송)
|
|
this.BarcodeSucessRateSendProcess();
|
|
//#20171120 유통기한 바코드 인식률 end, phj
|
|
|
|
//#15945 해피오더 자동주문 상세기능 start
|
|
// 해피오더 자동주문 로그 전송(HPO_AUTOORDER_LOG)
|
|
this.HappyOrderAutoOrderLogSendProcess();
|
|
//#15945 해피오더 자동주문 상세기능 end
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 02 - 상시 전송
|
|
// 10. 긴급메세지 전송
|
|
this.EmgNoteSendProcess();
|
|
#endregion
|
|
|
|
// 기본 : 100ms, 에러 5건 이상 : 5000ms, 에러 10회 이상 발생 시 : 60000ms, 데이터 없을 때 : 5000ms
|
|
if(iErrorCount >= 10)
|
|
{
|
|
iErrorCount = 10;
|
|
m_ThreadSleepTerm = 60000;
|
|
}
|
|
else if (iErrorCount == 5 || iSendDataCnt == 0)
|
|
{
|
|
m_ThreadSleepTerm = 5000;
|
|
}
|
|
else if(iErrorCount == 0)
|
|
{
|
|
m_ThreadSleepTerm = 100;
|
|
}
|
|
|
|
// Error Count 감소로 전환 시 기본 ThreadTerm으로 설정
|
|
if(iOldErrorCount > iErrorCount)
|
|
{
|
|
iErrorCount = 0;
|
|
m_ThreadSleepTerm = 100;
|
|
}
|
|
|
|
iOldErrorCount = iErrorCount;
|
|
|
|
int nNowSleepTerm = 0;
|
|
while (nNowSleepTerm < m_ThreadSleepTerm)
|
|
{
|
|
if (m_TranSVRSendRunning == false) break;
|
|
Thread.Sleep(100);
|
|
nNowSleepTerm += 100;
|
|
}
|
|
}
|
|
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 (함수명))
|
|
"ThreadSVRSendRun Exception : " + ex.Message);
|
|
break;
|
|
}
|
|
}
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
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 (함수명))
|
|
"ThreadSVRSendRun Exit!!");
|
|
}
|
|
#endregion
|
|
|
|
#region TRAN / 승인로그 / JOURNAL / ETC TRAN / ETC JOURNAL 전송 모듈
|
|
private string MakeCommHeader(int nMsgLen, string sMsgType, string sEncType, string sCmpCd, string sBrandCd, string sStorCd, string sSaleDt, string sPosNo, string sTradeNo, string sSysYmd, string sSysHms)
|
|
{
|
|
try
|
|
{
|
|
string[] aCommHead = new string[Column.COMM_HEADER.LEN.Length];
|
|
|
|
// 통신헤더의 전문 길이는 통신헤더길이 제외
|
|
// 박동철B, 조충연K - 2016.0818
|
|
//int nHeadLen = nMsgLen + LenMessage(Column.COMM_HEADER.LEN);
|
|
int nHeadLen = nMsgLen;
|
|
aCommHead[Column.COMM_HEADER.SEQ.MsgLen] = nHeadLen.ToString();
|
|
aCommHead[Column.COMM_HEADER.SEQ.MsgType] = sMsgType;
|
|
aCommHead[Column.COMM_HEADER.SEQ.CmpCd] = sCmpCd;
|
|
aCommHead[Column.COMM_HEADER.SEQ.BrandCd] = sBrandCd;
|
|
aCommHead[Column.COMM_HEADER.SEQ.StoreCd] = sStorCd;
|
|
aCommHead[Column.COMM_HEADER.SEQ.PosNo] = sPosNo;
|
|
aCommHead[Column.COMM_HEADER.SEQ.TradeNo] = sTradeNo;
|
|
aCommHead[Column.COMM_HEADER.SEQ.TranYmd] = sSaleDt;
|
|
aCommHead[Column.COMM_HEADER.SEQ.SysYmd] = sSysYmd;
|
|
aCommHead[Column.COMM_HEADER.SEQ.SysHms] = sSysHms;
|
|
aCommHead[Column.COMM_HEADER.SEQ.EncType] = sEncType;
|
|
aCommHead[Column.COMM_HEADER.SEQ.ErrCd] = "000";
|
|
|
|
return ItemColumn.MakeMessage(aCommHead, Column.COMM_HEADER.LEN, Column.COMM_HEADER.TYPE);
|
|
}
|
|
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 "";
|
|
}
|
|
|
|
private string SendProcess(string sSvrIp, int iPort, int iTimeout, string[] aKey, string sMsgType, Hashtable htSendData)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
|
|
try
|
|
{
|
|
// JSON 객체로 변환
|
|
string sJsonSendData = JsonConvert.SerializeObject(htSendData);
|
|
|
|
string sJsonRecvData = string.Empty;
|
|
|
|
string sCmpCd = aKey[0];
|
|
string sBrandCd = aKey[1];
|
|
string sStorCd = aKey[2];
|
|
string sSaleDt = aKey[3];
|
|
string sPosNo = aKey[4];
|
|
string sTradeNo = aKey[5];
|
|
string sSysYmd = DateTime.Now.ToString("yyyyMMdd");
|
|
string sSysHms = DateTime.Now.ToString("HHmmss");
|
|
|
|
if(sPosNo.Length < 2)
|
|
{
|
|
sPosNo = sPosNo.PadLeft(2, ' ');
|
|
}
|
|
|
|
// 암호화 데이터로 변환
|
|
string sEncryptedSendData = UserLog.UserAES.DynamicKeyEncrypt(sPosNo, sSysYmd + sSysHms, sJsonSendData);
|
|
// JSON string 길이를 구하기 위해 byte 변환
|
|
Byte[] arTempData = Encoding.UTF8.GetBytes(sEncryptedSendData);
|
|
|
|
string sCommHeader = this.MakeCommHeader(arTempData.Length, sMsgType, PosConst.ENCRYPT_MODE.ENC_ON, sCmpCd, sBrandCd, sStorCd, sSaleDt, sPosNo, sTradeNo, sSysYmd, sSysHms);
|
|
|
|
//UserLog.WriteLogFile(UserCom.LOG_SOCK,
|
|
// UserCom.INFO_LEVEL,
|
|
// System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
|
|
// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
// System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명)),
|
|
// CmUtil.RPadH("[SEND" + ":" + sSvrIp + ":" + iPort, 27) + "] " + sCommHeader + sJsonSendData);
|
|
|
|
int iRet = DataSendReceive(sSvrIp, iPort, iTimeout, sCommHeader + sEncryptedSendData);
|
|
|
|
if (iRet == UserCom.OK)
|
|
{
|
|
// 성공 시 Thread Term 조정 위한 Error 발생 카운트 감소. 0 이상일 경우만 감소.
|
|
if (iErrorCount > 0)
|
|
iErrorCount -= 1;
|
|
|
|
sRet = UserCom.RST_OK;
|
|
}
|
|
else
|
|
{
|
|
// 실패 시 Thread Term 조정 위해 Error 발생 카운트 증가
|
|
iErrorCount += 1;
|
|
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR,
|
|
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 (함수명))
|
|
"Failed sending Tran/Log. [MsgType:" + sMsgType +
|
|
"][CmpCd:" + sCmpCd + "][BrandCd:" + sBrandCd +
|
|
"][StoreCd:" + sStorCd + "][SaleDt:" + sSaleDt +
|
|
"][Pos:" + sPosNo + "][TradeNo:" + sTradeNo + "]");
|
|
}
|
|
}
|
|
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;
|
|
}
|
|
|
|
private int DataSendReceive(string sIP, int iPort, int iTimeout, string sSendData)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
try
|
|
{
|
|
m_ServerIp = sIP;
|
|
m_ServerPort = iPort;
|
|
m_ServerTimeout = iTimeout;
|
|
|
|
iRet = SendReceiveData(sSendData);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
private int SendReceiveData(string sSendData)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
int nRecvLen = 0;
|
|
string sRecvData = string.Empty;
|
|
|
|
try
|
|
{
|
|
m_sendSocket = new TcpSocket(m_ServerIp, m_ServerPort);
|
|
|
|
// Data Send & Receive
|
|
nRecvLen = m_sendSocket.SendReceiveData(sSendData, ref sRecvData, m_ServerTimeout);
|
|
|
|
//UserLog.WriteLogFile(UserCom.LOG_SOCK,
|
|
// UserCom.INFO_LEVEL,
|
|
// System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
|
|
// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
|
|
// System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명)),
|
|
// CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvData);
|
|
|
|
if (sRecvData.Length == TcpSocket.COMM_HEAD_LEN)
|
|
{
|
|
if (sRecvData.Substring(56, 3).Equals("000"))
|
|
{
|
|
iRet = UserCom.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 (함수명))
|
|
"NetworkTranSend Error : Exception !!! " + ex.Message);
|
|
}
|
|
return iRet;
|
|
}
|
|
#endregion
|
|
|
|
#region 점포점검 저장 데이터 전송
|
|
#region POS IRT 전문 송/수신
|
|
public string ExecutePosIrt(string sMsgType, string sSvrIP, int nSvrPort, int nTimeout, Hashtable htSendData, ref Hashtable htRecvData, bool bVisibleMode)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
Hashtable m_htRecvData = null; // 통신 수신 데이터 (JSON)
|
|
|
|
try
|
|
{
|
|
string sCommHead = ItemColumn.MakeCommHeader(0, sMsgType); // 통신해더 생성
|
|
|
|
if (bVisibleMode == false)
|
|
{
|
|
// 팝업 화면 미표시
|
|
m_bIRTComplete = true;
|
|
m_htRecvData = null;
|
|
|
|
Thread thrSecondDisp = new Thread(() => sRet = OnNetworkIRT(sSvrIP, nSvrPort, nTimeout, sCommHead, htSendData));
|
|
thrSecondDisp.Start();
|
|
|
|
while (m_bIRTComplete == true)
|
|
{
|
|
Thread.Sleep(100);
|
|
}
|
|
htRecvData = m_htRecvData;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region POS IRT 전문 송수신 - 화면 미표시용
|
|
private string OnNetworkIRT(string sServerIp, int nServerPort, int nTimeOut, string sCommHead, Hashtable htSendData)
|
|
{
|
|
string sRet = UserCom.RST_ERR;
|
|
|
|
int nRecvRet = -1;
|
|
try
|
|
{
|
|
m_bIRTComplete = true;
|
|
|
|
//if (m_cNetService == null) m_cNetJSONService = (INetworkJSON)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK.DLL, ServiceLists.AGENT_NETWORK.NETWORK_IRT);
|
|
nRecvRet = IRTSendReceive(sServerIp, nServerPort, nTimeOut, sCommHead, htSendData, ref m_htRecvData);
|
|
|
|
if (nRecvRet == BaseCom.OK) sRet = UserCom.RST_OK;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, UserCom.ERROR_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
|
|
"Process Exception !!! " + ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
m_bIRTComplete = false;
|
|
}
|
|
return sRet;
|
|
}
|
|
#endregion
|
|
|
|
#region IRT Byte로의 Send/Recv (공통헤더의 전문길이 0으로 세팅해서 송신. 자동 계산)
|
|
public int IRTSendReceive(string sIP, int iPort, int iTimeOut, string sCommData, Hashtable htData, ref Hashtable htRecvData)
|
|
{
|
|
int nStat = 9;
|
|
string sReturn = string.Empty;
|
|
string sRecvCommHeader = string.Empty;
|
|
string sRecvData = string.Empty;
|
|
|
|
m_ServerIp = sIP;
|
|
m_ServerPort = iPort;
|
|
m_ServerTimeout = iTimeOut;
|
|
|
|
string sJsonSendData = "";
|
|
string sJsonReceiveData = "";
|
|
|
|
try
|
|
{
|
|
if (m_ServerIp != "" && m_ServerPort != 0)
|
|
{
|
|
if (htData != null)
|
|
{
|
|
sJsonSendData = JsonConvert.SerializeObject(htData);
|
|
|
|
//sJsonSendData 암호화 처리 ...
|
|
|
|
Byte[] sBytTempBuff = Encoding.UTF8.GetBytes(sJsonSendData);
|
|
string sDataLen = string.Format("{0:000000}", sBytTempBuff.Length);
|
|
|
|
sCommData = sDataLen + sCommData.Substring(TcpSocket.COMM_MSGLEN);
|
|
|
|
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
|
|
"NetworkJSON.IRTSendReceive()", CmUtil.RPadH("[SEND" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sCommData + sJsonSendData);
|
|
}
|
|
|
|
//Send Receive
|
|
nStat = SendReceiveData(sCommData + sJsonSendData, ref sJsonReceiveData);
|
|
|
|
if (sJsonReceiveData != null && sJsonReceiveData != "")
|
|
{
|
|
sRecvCommHeader = sJsonReceiveData.Substring(0, TcpSocket.COMM_HEAD_LEN);
|
|
sRecvData = sJsonReceiveData.Substring(TcpSocket.COMM_HEAD_LEN);
|
|
//sJsonReceiveData 복호화 처리 ...
|
|
|
|
htRecvData = JsonConvert.DeserializeObject<Hashtable>(sRecvData);
|
|
|
|
UserLog.WriteLogFile(UserCom.LOG_SOCK, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (Project Name (프로젝트명))
|
|
"NetworkJSON.IRTSendReceive()", CmUtil.RPadH("[RECV" + ":" + m_ServerIp + ":" + m_ServerPort, 27) + "] " + sRecvCommHeader + sRecvData);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|
"NetworkJSON.IRTSendReceive()", e.ToString());
|
|
}
|
|
|
|
return nStat;
|
|
}
|
|
#endregion
|
|
|
|
#region IRT전문의 Send/Receive
|
|
private int SendReceiveData(string pSendData, ref string pRecvData, bool bIsDmbIf = false)
|
|
{
|
|
int nRecvLen = 0;
|
|
int nStat = BaseCom.NG;
|
|
string rRecvData = "";
|
|
|
|
try
|
|
{
|
|
m_IrtSocket = new TcpSocket(m_ServerIp, m_ServerPort, m_ServerTimeout);
|
|
|
|
// Data Send & Receive
|
|
System.Diagnostics.Debug.Print("요청:" + pSendData);
|
|
nRecvLen = m_IrtSocket.SendReceiveData(pSendData, ref rRecvData, m_ServerTimeout, bIsDmbIf);
|
|
System.Diagnostics.Debug.Print("응답:" + rRecvData);
|
|
|
|
if (nRecvLen > 0)
|
|
{
|
|
pRecvData = rRecvData;
|
|
nStat = BaseCom.OK;
|
|
}
|
|
else
|
|
{
|
|
pRecvData = "";
|
|
nStat = nRecvLen;
|
|
}
|
|
m_IrtSocket.Close();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
if (m_IrtSocket != null) m_IrtSocket.Close();
|
|
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
|
|
"NetworkJSON.SendReceiveData()", "NetworkIrt Error : ThreadNetworkIrt Exception !!! " + e.ToString());
|
|
}
|
|
finally
|
|
{
|
|
}
|
|
|
|
System.Threading.Thread.Sleep(100);
|
|
return nStat;
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
//*----------------------------------------------------------------------------------------------------------*/
|
|
// TranLog / Journal / ApprovalLog / ETC Tran / ETC Journal 데이터 생성
|
|
//*----------------------------------------------------------------------------------------------------------*/
|
|
|
|
#region 01 - TranLog 전송
|
|
/// <summary>
|
|
/// TranLog Sending Execution (TranLog 전송 실행)
|
|
/// </summary>
|
|
public void TranLogSendProcess()
|
|
{
|
|
string sendFlag = string.Empty;
|
|
string sCMP_CD = string.Empty;
|
|
string sSTOR_CD = string.Empty;
|
|
string sSALE_DT = string.Empty;
|
|
string sPOS_NO = string.Empty;
|
|
string sTRADE_NO = string.Empty;
|
|
|
|
string sREG_NO = string.Empty;
|
|
string sTRADE_DIV = string.Empty;
|
|
string sTRAIN_MODE_YN = string.Empty;
|
|
string sTRADE_KINDPER = string.Empty;
|
|
string sSYS_DT = string.Empty;
|
|
string sPAY_TIME = string.Empty;
|
|
string sORG_SALE_DT = string.Empty;
|
|
string sORG_POS_NO = string.Empty;
|
|
string sORG_TRADE_NO = string.Empty;
|
|
string sQTY = string.Empty;
|
|
string sTOTSALE_AMT = string.Empty;
|
|
string sTOTDC_AMT = string.Empty;
|
|
string sNET_SALE_AMT = string.Empty;
|
|
DataTable dtReturn = null;
|
|
try
|
|
{
|
|
// 전송할 TR 데이터 생성
|
|
string sTranLog = GetTranLog(ref dtReturn);
|
|
|
|
if(sTranLog == "" || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sendFlag = "0"; // 0:미전송, 1:전송, 9:에러
|
|
|
|
DataRow dr = dtReturn.Rows[0];
|
|
sCMP_CD = CmUtil.GetDataRowStr(dr, "CMP_CD");
|
|
sSTOR_CD = CmUtil.GetDataRowStr(dr, "STOR_CD");
|
|
sSALE_DT = CmUtil.GetDataRowStr(dr, "SALE_DT");
|
|
sPOS_NO = CmUtil.GetDataRowStr(dr, "POS_NO");
|
|
sTRADE_NO = CmUtil.GetDataRowStr(dr, "TRADE_NO");
|
|
|
|
sREG_NO = CmUtil.GetDataRowStr(dr, "REG_NO");
|
|
sTRADE_DIV = CmUtil.GetDataRowStr(dr, "TRADE_DIV");
|
|
sTRAIN_MODE_YN = CmUtil.GetDataRowStr(dr, "TRAIN_MODE_YN");
|
|
sTRADE_KINDPER = CmUtil.GetDataRowStr(dr, "TRADE_KINDPER");
|
|
sSYS_DT = CmUtil.GetDataRowStr(dr, "SYS_DT");
|
|
sPAY_TIME = CmUtil.GetDataRowStr(dr, "PAY_TIME");
|
|
sORG_SALE_DT = CmUtil.GetDataRowStr(dr, "ORG_BILLDT");
|
|
sORG_POS_NO = CmUtil.GetDataRowStr(dr, "ORG_BILL_POSNO");
|
|
sORG_TRADE_NO = CmUtil.GetDataRowStr(dr, "ORG_BILL_NO");
|
|
sQTY = CmUtil.GetDataRowStr(dr, "QTY");
|
|
sTOTSALE_AMT = CmUtil.GetDataRowStr(dr, "TOTSALE_AMT");
|
|
sTOTDC_AMT = CmUtil.GetDataRowStr(dr, "TOTDC_AMT");
|
|
sNET_SALE_AMT = CmUtil.GetDataRowStr(dr, "NET_SALE_AMT");
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.TranPort),
|
|
10000,
|
|
new string[] { sCMP_CD, m_cPosStatus.Base.BrandCd, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO },
|
|
ItemConst.COMM_MSG_TYPE.TRAN,
|
|
MakeTranLogJsonData(dr, sTranLog));
|
|
|
|
if(sReturn == UserCom.RST_OK)
|
|
{
|
|
sendFlag = "1"; // 정상 전송
|
|
|
|
// 전송 건수 증가
|
|
if( sSTOR_CD == m_cPosStatus.Base.StoreNo && sSALE_DT == m_cPosStatus.Base.SaleDate)
|
|
{
|
|
m_cPosStatus.Sale.TranSndCount++;
|
|
}
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sendFlag = "9"; // 에러
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
TranLogFlgUpdate(sCMP_CD, sSTOR_CD, sPOS_NO, sSALE_DT, sTRADE_NO, sendFlag);
|
|
}
|
|
}
|
|
|
|
private Hashtable MakeTranLogJsonData(DataRow drData, string sTranLog)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
// 01 - 회사코드
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.CmpCd, CmUtil.GetDataRowStr(drData, "CMP_CD"));
|
|
// 02 - 판매일자
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.SaleDt, CmUtil.GetDataRowStr(drData, "SALE_DT"));
|
|
// 03 - 점포코드
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.StorCd, CmUtil.GetDataRowStr(drData, "STOR_CD"));
|
|
// 04 - 포스번호
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.PosNo, CmUtil.GetDataRowStr(drData, "POS_NO"));
|
|
// 05 - 거래번호
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.TradeNo, CmUtil.GetDataRowStr(drData, "TRADE_NO"));
|
|
// 06 - 등록번호
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.RegNo, CmUtil.GetDataRowStr(drData, "REG_NO"));
|
|
// 07 - 거래구분
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.TradeDiv, CmUtil.GetDataRowStr(drData, "TRADE_DIV"));
|
|
// 08 - 연습모드 여부
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.TrainModeYn, CmUtil.GetDataRowStr(drData, "TRAIN_MODE_YN"));
|
|
// 09 - 거래종별
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.TradeKindper, CmUtil.GetDataRowStr(drData, "TRADE_KINDPER"));
|
|
// 10 - 시스템 일시
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.SysDt, CmUtil.GetDataRowStr(drData, "SYS_DT"));
|
|
// 11 - 결제 시간
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.PayTime, CmUtil.GetDataRowStr(drData, "PAY_TIME"));
|
|
// 12 - 원거래판매 일자
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.OrgSaleDt, CmUtil.GetDataRowStr(drData, "ORG_BILLDT"));
|
|
// 13 - 원거래포스번호
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.OrgPosNo, CmUtil.GetDataRowStr(drData, "ORG_BILL_POSNO"));
|
|
// 14 - 원거래 거래번호
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.OrgTradeNo, CmUtil.GetDataRowStr(drData, "ORG_BILL_NO"));
|
|
// 15 - 수량
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.Qty, CmUtil.GetDataRowStr(drData, "QTY"));
|
|
// 16 - 총매출금액
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.TotSaleAmt, CmUtil.GetDataRowStr(drData, "TOTSALE_AMT"));
|
|
// 17 - 총할인금액
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.TotDcAmt, CmUtil.GetDataRowStr(drData, "TOTDC_AMT"));
|
|
// 18 - 순매출금액
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.NetSaleAmt, CmUtil.GetDataRowStr(drData, "NET_SALE_AMT"));
|
|
// 19 - 거래데이터
|
|
htData.Add(Column.IQ_TRAN_LOG_REQ.DATA.DealData, sTranLog);
|
|
}
|
|
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 (함수명))
|
|
"ThreadSVRSendRun Exception : " + ex.Message);
|
|
}
|
|
|
|
return htData;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 정상으로 송신한 경우 Flg추가용 쿼리
|
|
/// </summary>
|
|
/// <param name="pStoreNo"></param>
|
|
/// <param name="pPosNo"></param>
|
|
/// <param name="pSaleDate"></param>
|
|
/// <param name="pTranNo"></param>
|
|
/// <param name="pSendFlg"></param>
|
|
/// <param name="pCenterSvrUse"></param>
|
|
/// <returns></returns>
|
|
public int TranLogFlgUpdate(string pCompanyCd, string pStoreNo, string pPosNo, string pSaleDate, string pTradeNo, string pSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = "";
|
|
|
|
try
|
|
{
|
|
if (pCompanyCd.Trim() == "") return iRet;
|
|
if (pSaleDate.Trim() == "") return iRet;
|
|
if (pStoreNo.Trim() == "") return iRet;
|
|
if (pPosNo.Trim() == "") return iRet;
|
|
if (pTradeNo.Trim() == "") return iRet;
|
|
|
|
sQuery = "UPDATE POSLOG..TR_SALE_HEADER ";
|
|
sQuery += " SET SEND_YN = '" + pSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + pCompanyCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + pStoreNo + "' ";
|
|
sQuery += " AND SALE_DT = '" + pSaleDate + "' ";
|
|
sQuery += " AND POS_NO = '" + pPosNo + "' ";
|
|
sQuery += " AND TRADE_NO = '" + pTradeNo + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
/// <summary>
|
|
/// TranLog 조회
|
|
/// </summary>
|
|
/// <param name="pSendFlg">0:미전송, 1:전송, 9:에러</param>
|
|
/// <returns></returns>
|
|
public string GetTranLog(ref DataTable dtReturn)
|
|
{
|
|
string sQuery = "";
|
|
string sCMP_CD = "";
|
|
string sSTOR_CD = "";
|
|
string sSALE_DT = "";
|
|
string sPOS_NO = "";
|
|
string sTRADE_NO = "";
|
|
|
|
string sTranData = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery = " SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, SALE_DT, STOR_CD, POS_NO, TRADE_NO ";
|
|
sQuery += " , '' AS REG_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT ";
|
|
sQuery += " , PAY_TIME, ORG_BILLDT, ORG_BILL_POSNO, ORG_BILL_NO, QTY ";
|
|
sQuery += " , TOTSALE_AMT, TOTDC_AMT, NET_SALE_AMT ";
|
|
sQuery += " FROM POSLOG..TR_SALE_HEADER ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
//#20180131 인천공항 통합POS 사용유무가 사용이면 SEND_YN을 A로 설정 start
|
|
//grayber@20180228 [BRKR] 인천공항 SEND_YN 매출전송유무 'A' 제거 start
|
|
if (m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) != true)
|
|
sQuery += " AND SEND_YN <> 'A' ";
|
|
//grayber@20180228 [BRKR] 인천공항 SEND_YN 매출전송유무 'A' 제거 end
|
|
//#20180131 인천공항 통합POS 사용유무가 사용이면 SEND_YN을 A로 설정 end
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN, SALE_DT, TRADE_NO ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
sCMP_CD = drTempReturn["CMP_CD"].ToString();
|
|
sSTOR_CD = drTempReturn["STOR_CD"].ToString();
|
|
sSALE_DT = drTempReturn["SALE_DT"].ToString();
|
|
sPOS_NO = drTempReturn["POS_NO"].ToString();
|
|
sTRADE_NO = drTempReturn["TRADE_NO"].ToString();
|
|
|
|
sTranData = GetTranHeader(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO)
|
|
+ GetTranDetail(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO)
|
|
+ GetTranPay(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO)
|
|
//+ GetTranDC(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO)
|
|
+ GetTranCpiRslt(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO)
|
|
+ GetTranEtc(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO)
|
|
//+ GetTranDpst(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO)
|
|
+ GetTranAdmt(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO)
|
|
+ GetTranGuestCnt(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO)
|
|
+ GetTranReservInfo(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sTranData = "";
|
|
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 sTranData;
|
|
}
|
|
|
|
private string GetTranHeader(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sTRADE_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '" + ItemConst.IRT_TRAN_TYPE.TranHeader + "' + '|' + '000000' + '|' + '0' + '|' + ISNULL(TRADE_DIV, '') + '|' + ISNULL(TRAIN_MODE_YN, '') + '|' + ISNULL(TRADE_KINDPER, '') + '|' + ISNULL(SYS_DT, '') + '|' + ISNULL(ORD_TIME, '') + '|' + ";
|
|
sQuery += " ISNULL(PAY_TIME, '') + '|' + ISNULL(PIC_NO, '') + '|' + ISNULL(ORD_PIC_NO, '') + '|' + ISNULL(STOR_OWN_PART_TIME_DIV, '') + '|' + ISNULL(ORG_BILL_POSNO, '') + '|' + ";
|
|
sQuery += " ISNULL(ORG_BILLDT, '') + '|' + ISNULL(ORG_BILL_NO, '') + '|' + ISNULL(RTN_RSN_CD, '') + '|' + ISNULL(RTN_RSN_MEMO, '') + '|' + ISNULL(NONSALES_RSN_CD, '') + '|' + ";
|
|
sQuery += " ISNULL(RESERV_NO, '') + '|' + ISNULL(RESERV_DT, '') + '|' + ISNULL(CUST_NO, '') + '|' + ISNULL(ORD_DIV, '') + '|' + ISNULL(FLOOR_CD, '') + '|' + ";
|
|
sQuery += " ISNULL(TBL_NO, '') + '|' + ISNULL(GUESTFLOOR, '') + '|' + ISNULL(FRGNR_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(CUSTCNT, 0)) + '|' + ISNULL(PAY_GNDR_DIV, '') + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(PAY_AGE, 0)) + '|' + CONVERT(VARCHAR, ISNULL(MAN_CMPNPSN_CNT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(WOMAN_CMPNPSN_CNT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY, 0)) + '|' + CONVERT(VARCHAR, ISNULL(TOTSALE_AMT, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(TOTDC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(NET_SALE_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(ITEM_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(CPI_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(COOP_CARD_DC_AMT, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(POINT_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(CPN_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(EMP_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SET_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(ETC_AMT, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(EXCEP_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(TOT_VAT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SVC_FEE_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SVC_FEE_VAT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(ETC_VAT, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(AF_ACCUM_POINT_AMT, 0)) + '|' + ISNULL(AF_ACCUM_POINT_INFO, '') + '|' + ISNULL(PPCARD_CUSTNM, '') + '|' + ISNULL(AMT_DUTCHPAY_YN, '') + '|' + CONVERT(VARCHAR, ISNULL(BILLSPR_CNT, 0)) + '|'+ ISNULL(ORDER_NO, '') + '|' + ";
|
|
|
|
|
|
//#20170828 해피포인트 적립 제외 버튼 추가 phj, start
|
|
//기존
|
|
//sQuery += " ISNULL(SLACK_FIELD, '') + '|' + ISNULL(MID_CLOSE_SEQ, '') + '|' + ISNULL(PPCARD_CUSTID, '') + '|' + ISNULL(PACK_TRADE_DIV, '') + '|' + ISNULL(VIP_TY, '') ";
|
|
//변경
|
|
sQuery += " ISNULL(SLACK_FIELD, '') + '|' + ISNULL(MID_CLOSE_SEQ, '') + '|' + ISNULL(PPCARD_CUSTID, '') + '|' + ISNULL(PACK_TRADE_DIV, '') + '|' + ISNULL(VIP_TY, '') + '|' + ISNULL(HP_EXCLUDE_YN, '0')";
|
|
//#20170828 해피포인트 적립 제외 버튼 추가 phj, end
|
|
|
|
sQuery += " AS TR_HEADER ";
|
|
sQuery += " FROM POSLOG..TR_SALE_HEADER ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND TRADE_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sTRADE_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetTranDetail(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sTRADE_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranDetail + "' + '|' + '000000' + '|' + CONVERT(VARCHAR, ISNULL(SEQ, 0)) + '|' + ISNULL(ORD_TIME, '') + '|' + ISNULL(FLOOR_CD, '') + '|' + ISNULL(TBL_NO, '') + '|' + ";
|
|
sQuery += " ISNULL(SUB_SHOP_CD, '') + '|' + ISNULL(ITEM_PLU_CD, '') + '|' + ISNULL(ITEM_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(SALE_QTY, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SALE_PRC, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(SALE_AMT, 0)) + '|' + ISNULL(FLAVOUR_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(FLAVOUR_WEIGHT, 0)) + '|' + ISNULL(ITEM_INPUT_DIV, '') + '|' + ISNULL(ITEM_BAR_CD, '') + '|' + ";
|
|
sQuery += " ISNULL(TAKE_IN_OUT_DIV, '') + '|' + ISNULL(ITEM_TAX_DIV, '') + '|' + ISNULL(TAX_AMT_INCLUDE_YN, '') + '|' + ISNULL(TAXRATE_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(APPLY_TAX_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SVC_FEE_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SVC_FEE_VAT, 0)) + '|' + ";
|
|
sQuery += " ISNULL(SVC_TAXREATE_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(BILL_AMT, 0)) + '|' + ISNULL(NONSALES_RSN_CD, '') + '|' + ISNULL(DC_DIV, '') + '|' + ISNULL(DC_TYPE, '') + '|' + CONVERT(VARCHAR, ISNULL(DC_RATE, 0)) + '|' + CONVERT(VARCHAR, ISNULL(ITEM_DC_AMT, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(SUM_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(CPI_DC_QTY, 0)) + '|' + CONVERT(VARCHAR, ISNULL(CPI_DC_AMT, 0)) + '|' + ISNULL(COOP_CARD_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(COOP_CARD_DC_AMT, 0)) + '|' + ISNULL(POINT_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(POINT_DC_AMT, 0)) + '|' + ";
|
|
sQuery += " ISNULL(CPN_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(CPN_DC_AMT, 0)) + '|' + ISNULL(EMP_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(EMP_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SET_DC_AMT, 0)) + '|' + ISNULL(ETC_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(ETC_DC_AMT, 0)) + '|' + ";
|
|
sQuery += " ISNULL(EXCEP_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(EXCEP_DC_AMT, 0)) + '|' + ISNULL(PACK_DIV, '') + '|' + ISNULL(SET_MENU_CD, '') + '|' + ISNULL(SUBPRC_MENU_KEY_DIV, '') + '|' + ";
|
|
//#20180903 해피오더 매출 생성 시 tr_sale_detail에 구분자 추가 start
|
|
//기존
|
|
//sQuery += " ISNULL(CPI_PRESENT_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(BILLSPR_NO, 0)) + '|' + ISNULL(SALE_GIFT_NO, '') + '|' + ISNULL(CPN_NO, '') + '|' + ISNULL(SLACK_FIELD, '') + '|' + ISNULL(DISPO_ITEM_DIV, '') + '|' + ISNULL(CANCEL_DIV, '0') + '|' + ISNULL(NOTAX_DIV, '') AS TR_DETAIL";
|
|
//변경
|
|
sQuery += " ISNULL(CPI_PRESENT_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(BILLSPR_NO, 0)) + '|' + ISNULL(SALE_GIFT_NO, '') + '|' + ISNULL(CPN_NO, '') + '|' + ISNULL(SLACK_FIELD, '') + '|' + ISNULL(DISPO_ITEM_DIV, '') + '|' + ISNULL(CANCEL_DIV, '0') + '|' + ISNULL(NOTAX_DIV, '') + '|' + ISNULL(HPO_REG_YN, '') AS TR_DETAIL";
|
|
//#20180903 해피오더 매출 생성 시 tr_sale_detail에 구분자 추가 end
|
|
|
|
sQuery += " FROM POSLOG..TR_SALE_DETAIL ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND TRADE_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sTRADE_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetTranPay(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sTRADE_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranPay + "' + '|' + '000000' + '|' + CONVERT(VARCHAR, ISNULL(SEQ, 0)) + '|' + ISNULL(PAY_WAY_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(PAY_AMT, 0)) + '|' + ISNULL(PAY_DTL_CD_01, '') + '|' + ISNULL(PAY_DTL_CD_02, '') + '|' + ";
|
|
sQuery += " ISNULL(PAY_DTL_CD_03, '') + '|' + ISNULL(PAY_DTL_CD_04, '') + '|' + ISNULL(PAY_DTL_CD_05, '') + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_01, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_02, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(QTY_ENTRY_03, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_04, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_05, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_01, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_02, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(AMT_ENTRY_03, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_04, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_05, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_06, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_07, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(AMT_ENTRY_08, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_09, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_10, 0)) + '|' + ISNULL(OCCUR_ENTRY_01, '') + '|' + ISNULL(OCCUR_ENTRY_02, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_03, '') + '|' + ISNULL(OCCUR_ENTRY_04, '') + '|' + ISNULL(OCCUR_ENTRY_05, '') + '|' + ISNULL(OCCUR_ENTRY_06, '') + '|' + ISNULL(OCCUR_ENTRY_07, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_08, '') + '|' + ISNULL(OCCUR_ENTRY_09, '') + '|' + ISNULL(OCCUR_ENTRY_10, '') + '|' + ISNULL(OCCUR_ENTRY_11, '') + '|' + ISNULL(OCCUR_ENTRY_12, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_13, '') + '|' + ISNULL(OCCUR_ENTRY_14, '') + '|' + ISNULL(OCCUR_ENTRY_15, '') + '|' + ISNULL(OCCUR_ENTRY_16, '') + '|' + ISNULL(OCCUR_ENTRY_17, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_18, '') + '|' + ISNULL(OCCUR_ENTRY_19, '') + '|' + ISNULL(OCCUR_ENTRY_20, '') + '|' + ISNULL(OCCUR_ENTRY_21, '') + '|' + ISNULL(OCCUR_ENTRY_22, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_23, '') + '|' + ISNULL(OCCUR_ENTRY_24, '') + '|' + ISNULL(OCCUR_ENTRY_25, '') + '|' + CONVERT(VARCHAR, ISNULL(BILLSPR_NO, 0)) + '|' + ISNULL(CANCEL_DIV, '') AS TR_PAY";
|
|
sQuery += " FROM POSLOG..TR_SALE_PAY ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND TRADE_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sTRADE_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
//private string GetTranDC(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sTRADE_NO)
|
|
//{
|
|
// StringBuilder sbTranData = new StringBuilder();
|
|
// string sQuery = "";
|
|
// string sSQL = "";
|
|
// DataTable dtTempReturn = null;
|
|
|
|
// try
|
|
// {
|
|
// sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranDC + "' + '|' + DC_WAY_CD + '|' + CONVERT(VARCHAR, DC_AMT) + '|' + DC_DTL_CD_01 + '|' + DC_DTL_CD_02 + '|' + ";
|
|
// sQuery += " DC_DTL_CD_03 + '|' + DC_DTL_CD_04 + '|' + DC_DTL_CD_05 + '|' + CONVERT(VARCHAR, QTY_ENTRY_01) + '|' + CONVERT(VARCHAR, QTY_ENTRY_02) + '|' + ";
|
|
// sQuery += " CONVERT(VARCHAR, QTY_ENTRY_03) + '|' + CONVERT(VARCHAR, QTY_ENTRY_04) + '|' + CONVERT(VARCHAR, QTY_ENTRY_05) + '|' + CONVERT(VARCHAR, AMT_ENTRY_01) + '|' + CONVERT(VARCHAR, AMT_ENTRY_02) + '|' + ";
|
|
// sQuery += " CONVERT(VARCHAR, AMT_ENTRY_03) + '|' + CONVERT(VARCHAR, AMT_ENTRY_04) + '|' + CONVERT(VARCHAR, AMT_ENTRY_05) + '|' + CONVERT(VARCHAR, AMT_ENTRY_06) + '|' + CONVERT(VARCHAR, AMT_ENTRY_07) + '|' + ";
|
|
// sQuery += " CONVERT(VARCHAR, AMT_ENTRY_08) + '|' + CONVERT(VARCHAR, AMT_ENTRY_09) + '|' + CONVERT(VARCHAR, AMT_ENTRY_10) + '|' + OCCUR_ENTRY_01 + '|' + OCCUR_ENTRY_02 + '|' + ";
|
|
// sQuery += " OCCUR_ENTRY_03 + '|' + OCCUR_ENTRY_04 + '|' + OCCUR_ENTRY_05 + '|' + OCCUR_ENTRY_06 + '|' + OCCUR_ENTRY_07 + '|' + ";
|
|
// sQuery += " OCCUR_ENTRY_08 + '|' + OCCUR_ENTRY_09 + '|' + OCCUR_ENTRY_10 + '|' + OCCUR_ENTRY_11 + '|' + OCCUR_ENTRY_12 + '|' + ";
|
|
// sQuery += " OCCUR_ENTRY_13 + '|' + OCCUR_ENTRY_14 + '|' + OCCUR_ENTRY_15 + '|' + OCCUR_ENTRY_16 + '|' + OCCUR_ENTRY_17 + '|' + ";
|
|
// sQuery += " OCCUR_ENTRY_18 + '|' + OCCUR_ENTRY_19 + '|' + OCCUR_ENTRY_20 + '|' + OCCUR_ENTRY_21 + '|' + OCCUR_ENTRY_22 + '|' + ";
|
|
// sQuery += " OCCUR_ENTRY_23 + '|' + OCCUR_ENTRY_24 + '|' + OCCUR_ENTRY_25 + '|' + CONVERT(VARCHAR, BILLSPR_NO) + '|' + CANCEL_DIV AS TR_DC";
|
|
// sQuery += " FROM POSLOG..TR_SALE_DC ";
|
|
// sQuery += " WHERE CMP_CD = '{0}' ";
|
|
// sQuery += " AND STOR_CD = '{1}' ";
|
|
// sQuery += " AND SALE_DT = '{2}' ";
|
|
// sQuery += " AND POS_NO = '{3}' ";
|
|
// sQuery += " AND TRADE_NO = '{4}' ";
|
|
|
|
// sSQL = string.Format(sQuery
|
|
// , sCMP_CD
|
|
// , sSTOR_CD
|
|
// , sSALE_DT
|
|
// , sPOS_NO
|
|
// , sTRADE_NO);
|
|
|
|
// if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
// {
|
|
// if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
// {
|
|
// foreach (DataRow dr in dtTempReturn.Rows)
|
|
// {
|
|
// sbTranData.Append(dr[0].ToString());
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// 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 sbTranData.ToString();
|
|
//}
|
|
|
|
private string GetTranCpiRslt(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sTRADE_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranCpiRslt + "' + '|' + '000000' + '|' + CONVERT(VARCHAR, ISNULL(SEQ, 0)) + '|' + ISNULL(CPI_TYPE, '') + '|' + CONVERT(VARCHAR, ISNULL(NMTAX_SEQ, 0)) + '|' + ISNULL(CPI_CD, '') + '|' + ISNULL(SUB_SHOP_CD, '') + '|' + ";
|
|
sQuery += " ISNULL(ITEM_PLU_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(DC_QTY, 0)) + '|' + CONVERT(VARCHAR, ISNULL(DC_SUM_AMT, 0)) + '|' + ISNULL(CPI_DIV, '') + '|' + ";
|
|
sQuery += " ISNULL(PAYMNT_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(ACCUM_POINT, 0)) + '|' + ISNULL(LTTR_NMPLAT_NO, '') + '|' + ISNULL(CPI_CUST_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(BILLSPR_NO, 0)) + '|' + ";
|
|
sQuery += " ISNULL(SLACK_FIELD, '') + '|' + ISNULL(CANCEL_DIV, '') AS TR_CPI_RSLT ";
|
|
sQuery += " FROM POSLOG..TR_SALE_CPI_RSLT ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND TRADE_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sTRADE_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetTranEtc(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sTRADE_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranEtc + "' + '|' + '000000' + '|' + CONVERT(VARCHAR, ISNULL(SEQ, 0)) + '|' + ISNULL(ETC_WAY_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(ETC_AMT, 0)) + '|' + ";
|
|
sQuery += " ISNULL(ETC_DTL_CD_01, '') + '|' + ISNULL(ETC_DTL_CD_02, '') + '|' + ISNULL(ETC_DTL_CD_03, '') + '|' + ISNULL(ETC_DTL_CD_04, '') + '|' + ISNULL(ETC_DTL_CD_05, '') + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(QTY_ENTRY_01, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_02, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_03, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_04, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_05, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(AMT_ENTRY_01, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_02, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_03, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_04, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_05, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(AMT_ENTRY_06, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_07, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_08, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_09, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_10, 0)) + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_01, '') + '|' + ISNULL(OCCUR_ENTRY_02, '') + '|' + ISNULL(OCCUR_ENTRY_03, '') + '|' + ISNULL(OCCUR_ENTRY_04, '') + '|' + ISNULL(OCCUR_ENTRY_05, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_06, '') + '|' + ISNULL(OCCUR_ENTRY_07, '') + '|' + ISNULL(OCCUR_ENTRY_08, '') + '|' + ISNULL(OCCUR_ENTRY_09, '') + '|' + ISNULL(OCCUR_ENTRY_10, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_11, '') + '|' + ISNULL(OCCUR_ENTRY_12, '') + '|' + ISNULL(OCCUR_ENTRY_13, '') + '|' + ISNULL(OCCUR_ENTRY_14, '') + '|' + ISNULL(OCCUR_ENTRY_15, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_16, '') + '|' + ISNULL(OCCUR_ENTRY_17, '') + '|' + ISNULL(OCCUR_ENTRY_18, '') + '|' + ISNULL(OCCUR_ENTRY_19, '') + '|' + ISNULL(OCCUR_ENTRY_20, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_21, '') + '|' + ISNULL(OCCUR_ENTRY_22, '') + '|' + ISNULL(OCCUR_ENTRY_23, '') + '|' + ISNULL(OCCUR_ENTRY_24, '') + '|' + ISNULL(OCCUR_ENTRY_25, '') + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(BILLSPR_NO, 0)) + '|' + ISNULL(CANCEL_DIV, '') AS TR_ETC";
|
|
sQuery += " FROM POSLOG..TR_SALE_ETC ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND TRADE_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sTRADE_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
//private string GetTranDpst(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sTRADE_NO)
|
|
//{
|
|
// StringBuilder sbTranData = new StringBuilder();
|
|
// string sQuery = "";
|
|
// string sSQL = "";
|
|
// DataTable dtTempReturn = null;
|
|
|
|
// try
|
|
// {
|
|
// sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranDpst + "' + '|' + '000000' + '|' + CONVERT(VARCHAR, ISNULL(SEQ, 0)) + '|' + ISNULL(DPST_WTHDR_TYPE, '') + '|' + ISNULL(DPST_WTHDR_CD, '') + '|' + ISNULL(DPST_WTHDR_ACC_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(DPST_WTHDR_QTY, 0)) + '|' + ";
|
|
// sQuery += " CONVERT(VARCHAR, ISNULL(DPST_WTHDR_AMT, 0)) + '|' + ISNULL(DPST_WTHDR_NM, '') + '|' + ISNULL(CUST_NO, '') + '|' + ISNULL(STOR_PAY_TYPE, '') + '|' + ISNULL(ETC_REASON, '') + '|' + ISNULL(SLACK_FIELD_01, '') + '|' + ISNULL(SLACK_FIELD_02, '') + '|' + ISNULL(SLACK_FIELD_03, '') + '|' + ";
|
|
// sQuery += " ISNULL(SLACK_FIELD_04, '') + '|' + SLACK_FIELD_05 AS TR_DPST ";
|
|
// sQuery += " FROM POSLOG..TR_SALE_DPST_WTHDR ";
|
|
// sQuery += " WHERE CMP_CD = '{0}' ";
|
|
// sQuery += " AND SALE_DT = '{1}' ";
|
|
// sQuery += " AND STOR_CD = '{2}' ";
|
|
// sQuery += " AND POS_NO = '{3}' ";
|
|
// sQuery += " AND TRADE_NO = '{4}' ";
|
|
|
|
// sSQL = string.Format(sQuery
|
|
// , sCMP_CD
|
|
// , sSALE_DT
|
|
// , sSTOR_CD
|
|
// , sPOS_NO
|
|
// , sTRADE_NO);
|
|
|
|
// if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
// {
|
|
// if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
// {
|
|
// foreach (DataRow dr in dtTempReturn.Rows)
|
|
// {
|
|
// sbTranData.Append(dr[0].ToString());
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// 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 sbTranData.ToString();
|
|
//}
|
|
|
|
private string GetTranAdmt(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sTRADE_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranAdmt + "' + '|' + '000000' + '|' + CONVERT(VARCHAR, ISNULL(SEQ, 0)) + '|' + ISNULL(ADMT_TYPE, '') + '|' + ISNULL(ADMT_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(QTY, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT, 0)) + '|' + ";
|
|
sQuery += " ISNULL(SLACK_FIELD_01, '') + '|' + ISNULL(SLACK_FIELD_02, '') + '|' + ISNULL(SLACK_FIELD_03, '') + '|' + ISNULL(SLACK_FIELD_04, '') + '|' + ";
|
|
sQuery += " ISNULL(SLACK_FIELD_05, '') AS TR_ADMT ";
|
|
sQuery += " FROM POSLOG..TR_SALE_ADMT ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND TRADE_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sTRADE_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetTranGuestCnt(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sTRADE_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranGuestCnt + "' + '|' + '000000' + '|' + '0' + '|' + CONVERT(VARCHAR, ISNULL(MALE_10L, 0)) + '|' + CONVERT(VARCHAR, ISNULL(MALE_20L, 0)) + '|' + CONVERT(VARCHAR, ISNULL(MALE_30L, 0)) + '|' + CONVERT(VARCHAR, ISNULL(MALE_40L, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(MALE_50L, 0)) + '|' + CONVERT(VARCHAR, ISNULL(FMALE_10L, 0)) + '|' + CONVERT(VARCHAR, ISNULL(FMALE_20L, 0)) + '|' + CONVERT(VARCHAR, ISNULL(FMALE_30L, 0)) + '|' + CONVERT(VARCHAR, ISNULL(FMALE_40L, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(FMALE_50L, 0)) AS TR_GUESTCNT ";
|
|
sQuery += " FROM POSLOG..TR_SALE_GUESTCNT ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND TRADE_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sTRADE_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetTranReservInfo(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sTRADE_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranReservInfo + "' + '|' + '000000' + '|' + '0' + '|' + ISNULL(RESERV_NO, 0) + '|' +ISNULL(RESERV_REG_DT, 0) + '|' + ISNULL(RESERV_REG_TM, 0) + '|' + ISNULL(ONOFF_DIV, 0) + '|' + ";
|
|
sQuery += " ISNULL(CUSTNM, 0) + '|' + ISNULL(CUST_PHN_NO, 0) + '|' + ISNULL(RESERV_DT, 0) + '|' + ISNULL(RESERV_TM, 0) + '|' + ISNULL(RESERV_MEMO, 0) AS TR_RESERVINFO ";
|
|
sQuery += " FROM POSLOG..TR_RESERV_INFO ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND TRADE_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sTRADE_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
#endregion
|
|
|
|
#region 02 - Journal 전송
|
|
/// <summary>
|
|
/// Journal Sending Execution (Journal 전송 실행)
|
|
/// </summary>
|
|
public void JournalSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
Hashtable htData = null;
|
|
string sSendFlag = string.Empty;
|
|
string sCmpCd = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sTradeNo = string.Empty;
|
|
try
|
|
{
|
|
// 전송할 Journal 데이터 생성
|
|
htData = GetJournalData(ref dtReturn);
|
|
|
|
if(dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sCmpCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "CMP_CD");
|
|
sStorCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "STOR_CD");
|
|
sSaleDt = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SALE_DT");
|
|
sPosNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "POS_NO");
|
|
sTradeNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "TRADE_NO");
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlPort),
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlTimeout),
|
|
new string[] { sCmpCd, m_cPosStatus.Base.BrandCd, sStorCd, sSaleDt, sPosNo, sTradeNo },
|
|
ItemConst.COMM_MSG_TYPE.JOURNAL,
|
|
htData);
|
|
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
|
|
// 전송 건수 증가
|
|
if (sStorCd == m_cPosStatus.Base.StoreNo && sSaleDt == m_cPosStatus.Base.SaleDate)
|
|
{
|
|
m_cPosStatus.Sale.JourSndCount++;
|
|
}
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
JournalFlgUpdate(sCmpCd, sStorCd, sPosNo, sSaleDt, sTradeNo, sSendFlag);
|
|
}
|
|
}
|
|
|
|
private int JournalFlgUpdate(string sCmpCd, string sStorCd, string sPosNo, string sSaleDt, string sTradeNo, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "") return iRet;
|
|
if (sStorCd.Trim() == "") return iRet;
|
|
if (sPosNo.Trim() == "") return iRet;
|
|
if (sSaleDt.Trim() == "") return iRet;
|
|
if (sTradeNo.Trim() == "") return iRet;
|
|
|
|
sQuery += " UPDATE POSLOG..TR_SALE_JOURNAL ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
sQuery += " AND POS_NO = '" + sPosNo + "' ";
|
|
sQuery += " AND TRADE_NO = '" + sTradeNo + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
public Hashtable GetJournalData(ref DataTable dtReturn)
|
|
{
|
|
Hashtable htReturn = null;
|
|
string sQuery = string.Empty;
|
|
|
|
string sCmpCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sTradeNo = string.Empty;
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
sQuery += " SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, SALE_DT, STOR_CD, POS_NO, TRADE_NO ";
|
|
sQuery += " , '' AS REG_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT ";
|
|
sQuery += " , SYS_TIME, PIC_NO, BILL_AMT, JOURNAL_DATA ";
|
|
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start
|
|
sQuery += " , HPC_SAVE_APPR_DT, HPC_SAVE_APPR_NO, HPC_USE_APPR_DT, HPC_USE_APPR_NO ";
|
|
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end
|
|
sQuery += " FROM POSLOG..TR_SALE_JOURNAL ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
//#20180131 인천공항 통합POS 사용유무가 사용이면 SEND_YN을 A로 설정 start
|
|
//grayber@20180228 [BRKR] 인천공항 SEND_YN 매출전송유무 'A' 제거 start
|
|
if(m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) != true)
|
|
sQuery += " AND SEND_YN <> 'A' ";
|
|
//grayber@20180228 [BRKR] 인천공항 SEND_YN 매출전송유무 'A' 제거 end
|
|
//#20180131 인천공항 통합POS 사용유무가 사용이면 SEND_YN을 A로 설정 end
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN, SALE_DT, TRADE_NO ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if(dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
htReturn = MakeJournalJsonData(drTempReturn);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 htReturn;
|
|
}
|
|
|
|
private Hashtable MakeJournalJsonData(DataRow drData)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
// 01 - 회사코드
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.CmpCd, CmUtil.GetDataRowStr(drData, "CMP_CD"));
|
|
// 02 - 점포코드
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.StorCd, CmUtil.GetDataRowStr(drData, "STOR_CD"));
|
|
// 03 - 판매일자
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.SaleDt, CmUtil.GetDataRowStr(drData, "SALE_DT"));
|
|
// 04 - 포스번호
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.PosNo, CmUtil.GetDataRowStr(drData, "POS_NO"));
|
|
// 05 - 거래번호
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.TradeNo, CmUtil.GetDataRowStr(drData, "TRADE_NO"));
|
|
// 06 - 등록번호
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.RegNo, CmUtil.GetDataRowStr(drData, "REG_NO"));
|
|
// 07 - 거래구분
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.TradeDiv, CmUtil.GetDataRowStr(drData, "TRADE_DIV"));
|
|
// 08 - 연습모드 여부
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.TrainModeYn, CmUtil.GetDataRowStr(drData, "TRAIN_MODE_YN"));
|
|
// 09 - 거래종별
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.TradeKindper, CmUtil.GetDataRowStr(drData, "TRADE_KINDPER"));
|
|
// 10 - 시스템일자
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.SysDt, CmUtil.GetDataRowStr(drData, "SYS_DT"));
|
|
// 11 - 시스템시간
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.SysTime, CmUtil.GetDataRowStr(drData, "SYS_TIME"));
|
|
// 12 - 담당자번호
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.PicNo, CmUtil.GetDataRowStr(drData, "PIC_NO"));
|
|
// 13 - 영수금액
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.BillAmt, CmUtil.GetDataRowStr(drData, "BILL_AMT"));
|
|
// 14 - 저널데이터
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.JournalData, CmUtil.GetDataRowStr(drData, "JOURNAL_DATA"));
|
|
|
|
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start
|
|
// 15 - 해피포인트 적립 승인일자
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.HpcSaveApprDt, CmUtil.GetDataRowStr(drData, "HPC_SAVE_APPR_DT"));
|
|
// 16 - 해피포인트 적립 승인번호
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.HpcSaveApprNo, CmUtil.GetDataRowStr(drData, "HPC_SAVE_APPR_NO"));
|
|
// 17 - 해피포인트 사용 승인일자
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.HpcUseApprDt, CmUtil.GetDataRowStr(drData, "HPC_USE_APPR_DT"));
|
|
// 18 - 해피포인트 사용 승인번호
|
|
htData.Add(Column.IQ_JOURNAL_REQ.DATA.HpcUseApprNo, CmUtil.GetDataRowStr(drData, "HPC_USE_APPR_NO"));
|
|
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end
|
|
|
|
}
|
|
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 htData;
|
|
}
|
|
#endregion
|
|
|
|
#region 03 - ApprovalLog 전송
|
|
public void ApprovalLogSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
Hashtable htData = null;
|
|
string sSendFlag = string.Empty;
|
|
string sCmpCd = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sTradeNo = string.Empty;
|
|
string sSeq = string.Empty;
|
|
try
|
|
{
|
|
// 전송할 승인로그 데이터 생성
|
|
htData = GetApprovalLog(ref dtReturn);
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sCmpCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "CMP_CD");
|
|
sStorCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "STOR_CD");
|
|
sSaleDt = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SALE_DT");
|
|
sPosNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "POS_NO");
|
|
sTradeNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "TRADE_NO");
|
|
sSeq = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SEQ");
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlPort),
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlTimeout),
|
|
new string[] { sCmpCd, m_cPosStatus.Base.BrandCd, sStorCd, sSaleDt, sPosNo, sTradeNo },
|
|
ItemConst.COMM_MSG_TYPE.APPRLOG,
|
|
htData);
|
|
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
ApprovalLogFlgUpdate(sCmpCd, sStorCd, sPosNo, sSaleDt, sTradeNo, sSeq, sSendFlag);
|
|
}
|
|
}
|
|
|
|
private int ApprovalLogFlgUpdate(string sCmpCd, string sStorCd, string sPosNo, string sSaleDt, string sTradeNo, string sSeq, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "") return iRet;
|
|
if (sSaleDt.Trim() == "") return iRet;
|
|
if (sStorCd.Trim() == "") return iRet;
|
|
if (sPosNo.Trim() == "") return iRet;
|
|
if (sTradeNo.Trim() == "") return iRet;
|
|
if (sSeq.Trim() == "") return iRet;
|
|
|
|
sQuery += " UPDATE POSLOG..TR_SALE_APPR_LOG ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
sQuery += " AND POS_NO = '" + sPosNo + "' ";
|
|
sQuery += " AND TRADE_NO = '" + sTradeNo + "' ";
|
|
sQuery += " AND SEQ = '" + sSeq + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
public Hashtable GetApprovalLog(ref DataTable dtReturn)
|
|
{
|
|
Hashtable htReturn = null;
|
|
string sQuery = string.Empty;
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
sQuery += " SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, STOR_CD, SALE_DT, POS_NO, TRADE_NO, SEQ, TRADE_DIV ";
|
|
sQuery += " , PAY_WAY_CD, PAY_DTL_CD, INQ_TYPE, TRAN_TYPE, CARD_NO, RES_CD, RES_MSG, PAY_AMT ";
|
|
sQuery += " , APPR_NO, APPR_DT, APPR_TIME, APPR_LOG, SEND_YN, REG_DATE, REG_ID, UPD_DATE ";
|
|
sQuery += " , ISNULL(AMT_ENTRY_01, 0) AMT_ENTRY_01 ";
|
|
sQuery += " , ISNULL(AMT_ENTRY_02, 0) AMT_ENTRY_02 ";
|
|
sQuery += " , ISNULL(AMT_ENTRY_03, 0) AMT_ENTRY_03 ";
|
|
sQuery += " , ISNULL(AMT_ENTRY_04, 0) AMT_ENTRY_04 ";
|
|
sQuery += " , ISNULL(AMT_ENTRY_05, 0) AMT_ENTRY_05 ";
|
|
|
|
sQuery += " , ISNULL(AMT_ENTRY_06, 0) AMT_ENTRY_06 ";
|
|
sQuery += " , ISNULL(AMT_ENTRY_07, 0) AMT_ENTRY_07 ";
|
|
sQuery += " , ISNULL(AMT_ENTRY_08, 0) AMT_ENTRY_08 ";
|
|
sQuery += " , ISNULL(AMT_ENTRY_09, 0) AMT_ENTRY_09 ";
|
|
|
|
sQuery += " , ISNULL(OCCUR_ENTRY_01, '') OCCUR_ENTRY_01 ";
|
|
sQuery += " , ISNULL(OCCUR_ENTRY_02, '') OCCUR_ENTRY_02 ";
|
|
sQuery += " , ISNULL(OCCUR_ENTRY_03, '') OCCUR_ENTRY_03 ";
|
|
sQuery += " , ISNULL(OCCUR_ENTRY_04, '') OCCUR_ENTRY_04 ";
|
|
sQuery += " , ISNULL(OCCUR_ENTRY_05, '') OCCUR_ENTRY_05 ";
|
|
sQuery += " , ISNULL(OCCUR_ENTRY_06, '') OCCUR_ENTRY_06 ";
|
|
sQuery += " , ISNULL(OCCUR_ENTRY_07, '') OCCUR_ENTRY_07 ";
|
|
sQuery += " , ISNULL(OCCUR_ENTRY_08, '') OCCUR_ENTRY_08 ";
|
|
sQuery += " , ISNULL(OCCUR_ENTRY_09, '') OCCUR_ENTRY_09 ";
|
|
|
|
sQuery += " , ISNULL(USE_YN, '1') USE_YN ";
|
|
|
|
sQuery += " FROM POSLOG..TR_SALE_APPR_LOG ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN, SALE_DT, TRADE_NO, SEQ ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
htReturn = MakeApprovalLogJsonData(drTempReturn);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 htReturn;
|
|
}
|
|
|
|
private Hashtable MakeApprovalLogJsonData(DataRow drData)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
// 01 - 회사코드
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.CmpCd, CmUtil.GetDataRowStr(drData, "CMP_CD"));
|
|
// 02 - 점포코드
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.StorCd, CmUtil.GetDataRowStr(drData, "STOR_CD"));
|
|
// 03 - 판매일자
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.SaleDt, CmUtil.GetDataRowStr(drData, "SALE_DT"));
|
|
// 04 - 포스번호
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.PosNo, CmUtil.GetDataRowStr(drData, "POS_NO"));
|
|
// 05 - 거래번호
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.TradeNo, CmUtil.GetDataRowStr(drData, "TRADE_NO"));
|
|
// 06 - 순번
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.Seq, CmUtil.GetDataRowStr(drData, "SEQ"));
|
|
// 07 - 판매구분
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.TradeDiv, CmUtil.GetDataRowStr(drData, "TRADE_DIV"));
|
|
// 08 - 결제 구분 코드
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.PayWayCd, CmUtil.GetDataRowStr(drData, "PAY_WAY_CD"));
|
|
// 09 - 결제 상세 코드
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.PayDtlCd, CmUtil.GetDataRowStr(drData, "PAY_DTL_CD"));
|
|
// 10 - 승인구분
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.InqType, CmUtil.GetDataRowStr(drData, "INQ_TYPE"));
|
|
// 11 - 요청구분
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.TranType, CmUtil.GetDataRowStr(drData, "TRAN_TYPE"));
|
|
// 12 - 카드번호
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.CardNo, CmUtil.GetDataRowStr(drData, "CARD_NO"));
|
|
// 13 - 응답상태값
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.ResCd, CmUtil.GetDataRowStr(drData, "RES_CD"));
|
|
// 14 - 응답 메시지
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.ResMsg, CmUtil.GetDataRowStr(drData, "RES_MSG"));
|
|
// 15 - 결제금액
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.PayAmt, CmUtil.GetDataRowStr(drData, "PAY_AMT"));
|
|
// 16 - 승인번호
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.ApprNo, CmUtil.GetDataRowStr(drData, "APPR_NO"));
|
|
// 17 - 승인일자
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.ApprDt, CmUtil.GetDataRowStr(drData, "APPR_DT"));
|
|
// 18 - 승인시간
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.ApprTime, CmUtil.GetDataRowStr(drData, "APPR_TIME"));
|
|
// 19 - 입력데이터
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.ApprLog, CmUtil.GetDataRowStr(drData, "APPR_LOG"));
|
|
// 20 - 등록자ID
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.RegId, CmUtil.GetDataRowStr(drData, "REG_ID"));
|
|
// 21 - 금액1
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.AMT_ENTRY_01, CmUtil.GetDataRowStr(drData, "AMT_ENTRY_01"));
|
|
// 22 - 금액2
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.AMT_ENTRY_02, CmUtil.GetDataRowStr(drData, "AMT_ENTRY_02"));
|
|
// 23 - 금액3
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.AMT_ENTRY_03, CmUtil.GetDataRowStr(drData, "AMT_ENTRY_03"));
|
|
// 24 - 금액4
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.AMT_ENTRY_04, CmUtil.GetDataRowStr(drData, "AMT_ENTRY_04"));
|
|
// 25 - 금액5
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.AMT_ENTRY_05, CmUtil.GetDataRowStr(drData, "AMT_ENTRY_05"));
|
|
|
|
// 26 - 금액6
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.AMT_ENTRY_06, CmUtil.GetDataRowStr(drData, "AMT_ENTRY_06"));
|
|
// 27 - 금액7
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.AMT_ENTRY_07, CmUtil.GetDataRowStr(drData, "AMT_ENTRY_07"));
|
|
// 28 - 금액8
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.AMT_ENTRY_08, CmUtil.GetDataRowStr(drData, "AMT_ENTRY_08"));
|
|
// 29 - 금액9
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.AMT_ENTRY_09, CmUtil.GetDataRowStr(drData, "AMT_ENTRY_09"));
|
|
|
|
// 30 - 입력값1
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.OCCUR_ENTRY_01, CmUtil.GetDataRowStr(drData, "OCCUR_ENTRY_01"));
|
|
// 31 - 입력값2
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.OCCUR_ENTRY_02, CmUtil.GetDataRowStr(drData, "OCCUR_ENTRY_02"));
|
|
// 32 - 입력값3
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.OCCUR_ENTRY_03, CmUtil.GetDataRowStr(drData, "OCCUR_ENTRY_03"));
|
|
// 33 - 입력값4
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.OCCUR_ENTRY_04, CmUtil.GetDataRowStr(drData, "OCCUR_ENTRY_04"));
|
|
// 34 - 입력값5
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.OCCUR_ENTRY_05, CmUtil.GetDataRowStr(drData, "OCCUR_ENTRY_05"));
|
|
// 35 - 입력값6
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.OCCUR_ENTRY_06, CmUtil.GetDataRowStr(drData, "OCCUR_ENTRY_06"));
|
|
// 36 - 입력값7
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.OCCUR_ENTRY_07, CmUtil.GetDataRowStr(drData, "OCCUR_ENTRY_07"));
|
|
// 37 - 입력값8
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.OCCUR_ENTRY_08, CmUtil.GetDataRowStr(drData, "OCCUR_ENTRY_08"));
|
|
// 38 - 입력값9
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.OCCUR_ENTRY_09, CmUtil.GetDataRowStr(drData, "OCCUR_ENTRY_09"));
|
|
|
|
// 39 - 사용여부
|
|
htData.Add(Column.IQ_APPROVAL_LOG_REQ.DATA.USE_YN, CmUtil.GetDataRowStr(drData, "USE_YN"));
|
|
}
|
|
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 htData;
|
|
}
|
|
#endregion
|
|
|
|
#region 04 - ETC TRAN 전송
|
|
public void ETCTranLogSendProcess()
|
|
{
|
|
string sendFlag = string.Empty;
|
|
string sCMP_CD = string.Empty;
|
|
string sSTOR_CD = string.Empty;
|
|
string sSALE_DT = string.Empty;
|
|
string sPOS_NO = string.Empty;
|
|
string sTRADE_NO = string.Empty;
|
|
|
|
string sREG_NO = string.Empty;
|
|
string sTRADE_DIV = string.Empty;
|
|
string sTRAIN_MODE_YN = string.Empty;
|
|
string sTRADE_KINDPER = string.Empty;
|
|
string sSYS_DT = string.Empty;
|
|
string sORG_SALE_DT = string.Empty;
|
|
string sORG_POS_NO = string.Empty;
|
|
string sORG_TRADE_NO = string.Empty;
|
|
string sQTY = string.Empty;
|
|
string sTOTSALE_AMT = string.Empty;
|
|
string sTOTDC_AMT = string.Empty;
|
|
string sNET_SALE_AMT = string.Empty;
|
|
DataTable dtReturn = null;
|
|
try
|
|
{
|
|
// 전송할 ETC TRAN 데이터 생성
|
|
string sEtcTranLog = GetEtcTranLog(ref dtReturn);
|
|
|
|
if (sEtcTranLog == "" || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sendFlag = "0"; // 0:미전송, 1:전송, 9:에러
|
|
|
|
DataRow dr = dtReturn.Rows[0];
|
|
sCMP_CD = CmUtil.GetDataRowStr(dr, "CMP_CD");
|
|
sSTOR_CD = CmUtil.GetDataRowStr(dr, "STOR_CD");
|
|
sSALE_DT = CmUtil.GetDataRowStr(dr, "SALE_DT");
|
|
sPOS_NO = CmUtil.GetDataRowStr(dr, "POS_NO");
|
|
sREG_NO = CmUtil.GetDataRowStr(dr, "REG_NO");
|
|
|
|
sTRADE_NO = CmUtil.GetDataRowStr(dr, "TRADE_NO");
|
|
sTRADE_DIV = CmUtil.GetDataRowStr(dr, "TRADE_DIV");
|
|
sTRAIN_MODE_YN = CmUtil.GetDataRowStr(dr, "TRAIN_MODE_YN");
|
|
sTRADE_KINDPER = CmUtil.GetDataRowStr(dr, "TRADE_KINDPER");
|
|
sSYS_DT = CmUtil.GetDataRowStr(dr, "SYS_DT");
|
|
sORG_SALE_DT = CmUtil.GetDataRowStr(dr, "ORG_BILLDT");
|
|
sORG_POS_NO = CmUtil.GetDataRowStr(dr, "ORG_BILL_POSNO");
|
|
sORG_TRADE_NO = CmUtil.GetDataRowStr(dr, "ORG_BILL_NO");
|
|
sQTY = CmUtil.GetDataRowStr(dr, "QTY");
|
|
sTOTSALE_AMT = CmUtil.GetDataRowStr(dr, "TOTSALE_AMT");
|
|
sTOTDC_AMT = CmUtil.GetDataRowStr(dr, "TOTDC_AMT");
|
|
sNET_SALE_AMT = CmUtil.GetDataRowStr(dr, "NET_SALE_AMT");
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.EtcTranPort),
|
|
8000,
|
|
new string[] { sCMP_CD, m_cPosStatus.Base.BrandCd, sSTOR_CD, sSALE_DT, sPOS_NO, sTRADE_NO },
|
|
ItemConst.COMM_MSG_TYPE.ETCTRAN,
|
|
MakeTranLogJsonData(dr, sEtcTranLog));
|
|
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sendFlag = "1"; // 정상 전송
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sendFlag = "9"; // 에러
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
ETCTranLogFlgUpdate(sCMP_CD, sSTOR_CD, sPOS_NO, sSALE_DT, sREG_NO, sendFlag);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 정상으로 송신한 경우 Flg추가용 쿼리
|
|
/// </summary>
|
|
/// <param name="pStoreNo"></param>
|
|
/// <param name="pPosNo"></param>
|
|
/// <param name="pSaleDate"></param>
|
|
/// <param name="pTranNo"></param>
|
|
/// <param name="pSendFlg"></param>
|
|
/// <param name="pCenterSvrUse"></param>
|
|
/// <returns></returns>
|
|
public int ETCTranLogFlgUpdate(string pCompanyCd, string pStoreNo, string pPosNo, string pSaleDate, string pRegNo, string pSendFlag)
|
|
{
|
|
int iRet = UserCom.NG; ;
|
|
string sQuery = "";
|
|
|
|
try
|
|
{
|
|
if (pCompanyCd.Trim() == "") return iRet;
|
|
if (pStoreNo.Trim() == "") return iRet;
|
|
if (pPosNo.Trim() == "") return iRet;
|
|
if (pSaleDate.Trim() == "") return iRet;
|
|
if (pRegNo.Trim() == "") return iRet;
|
|
|
|
sQuery = "UPDATE POSLOG..ETC_SALE_HEADER ";
|
|
sQuery += " SET SEND_YN = '" + pSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + pCompanyCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + pSaleDate + "' ";
|
|
sQuery += " AND STOR_CD = '" + pStoreNo + "' ";
|
|
sQuery += " AND POS_NO = '" + pPosNo + "' ";
|
|
sQuery += " AND REG_NO = '" + pRegNo + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
/// <summary>
|
|
/// ETC TranLog 조회
|
|
/// </summary>
|
|
/// <param name="pSendFlg">0:미전송, 1:전송, 9:에러</param>
|
|
/// <returns></returns>
|
|
public string GetEtcTranLog(ref DataTable dtReturn)
|
|
{
|
|
string sQuery = "";
|
|
string sCMP_CD = "";
|
|
string sSTOR_CD = "";
|
|
string sSALE_DT = "";
|
|
string sPOS_NO = "";
|
|
string sREG_NO = "";
|
|
string sTRADE_NO = "";
|
|
|
|
string sTranData = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, SALE_DT, STOR_CD, POS_NO, REG_NO ";
|
|
sQuery += " , TRADE_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT ";
|
|
sQuery += " , ORG_BILLDT, ORG_BILL_POSNO, ORG_BILL_NO, QTY, TOTSALE_AMT ";
|
|
sQuery += " , TOTDC_AMT, NET_SALE_AMT ";
|
|
sQuery += " FROM POSLOG..ETC_SALE_HEADER ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN, SALE_DT, REG_NO ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
sCMP_CD = drTempReturn["CMP_CD"].ToString();
|
|
sSTOR_CD = drTempReturn["STOR_CD"].ToString();
|
|
sSALE_DT = drTempReturn["SALE_DT"].ToString();
|
|
sPOS_NO = drTempReturn["POS_NO"].ToString();
|
|
sREG_NO = drTempReturn["REG_NO"].ToString();
|
|
sTRADE_NO = drTempReturn["TRADE_NO"].ToString();
|
|
|
|
sTranData = GetEtcTranHeader(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sREG_NO)
|
|
+ GetEtcTranDetail(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sREG_NO)
|
|
+ GetEtcTranPay(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sREG_NO)
|
|
+ GetEtcTranEtc(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sREG_NO)
|
|
+ GetEtcTranDpst(sCMP_CD, sSTOR_CD, sSALE_DT, sPOS_NO, sREG_NO);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
sTranData = "";
|
|
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 sTranData;
|
|
}
|
|
|
|
private string GetEtcTranHeader(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sREG_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '" + ItemConst.IRT_TRAN_TYPE.EtcTranHeader + "' + '|' + '000000' + '|' + '0' + '|' + ISNULL(TRADE_DIV, '') + '|' + ISNULL(TRAIN_MODE_YN, '') + '|' + ISNULL(TRADE_KINDPER, '') + '|' + ISNULL(SYS_DT, '') + '|' + ISNULL(ORD_TIME, '') + '|' + ";
|
|
sQuery += " ISNULL(PAY_TIME, '') + '|' + ISNULL(PIC_NO, '') + '|' + ISNULL(ORD_PIC_NO, '') + '|' + ISNULL(STOR_OWN_PART_TIME_DIV, '') + '|' + ISNULL(ORG_BILL_POSNO, '') + '|' + ";
|
|
sQuery += " ISNULL(ORG_BILLDT, '') + '|' + ISNULL(ORG_BILL_NO, '') + '|' + ISNULL(RTN_RSN_CD, '') + '|' + ISNULL(RTN_RSN_MEMO, '') + '|' + ISNULL(NONSALES_RSN_CD, '') + '|' + ";
|
|
sQuery += " ISNULL(RESERV_NO, '') + '|' + ISNULL(RESERV_DT, '') + '|' + ISNULL(CUST_NO, '') + '|' + ISNULL(ORD_DIV, '') + '|' + ISNULL(FLOOR_CD, '') + '|' + ";
|
|
sQuery += " ISNULL(TBL_NO, '') + '|' + ISNULL(GUESTFLOOR, '') + '|' + ISNULL(FRGNR_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(CUSTCNT, 0)) + '|' + ISNULL(PAY_GNDR_DIV, '') + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(PAY_AGE, 0)) + '|' + CONVERT(VARCHAR, ISNULL(MAN_CMPNPSN_CNT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(WOMAN_CMPNPSN_CNT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY, 0)) + '|' + CONVERT(VARCHAR, ISNULL(TOTSALE_AMT, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(TOTDC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(NET_SALE_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(ITEM_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(CPI_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(COOP_CARD_DC_AMT, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(POINT_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(CPN_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(EMP_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SET_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(ETC_AMT, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(EXCEP_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(TOT_VAT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SVC_FEE_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SVC_FEE_VAT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(ETC_VAT, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(AF_ACCUM_POINT_AMT, 0)) + '|' + ISNULL(AF_ACCUM_POINT_INFO, '') + '|' + ISNULL(PPCARD_CUSTNM, '') + '|' + ISNULL(AMT_DUTCHPAY_YN, '') + '|' + CONVERT(VARCHAR, ISNULL(BILLSPR_CNT, 0)) + '|'+ ISNULL(ORDER_NO, '') + '|' + ";
|
|
|
|
//#20170828 해피포인트 적립 제외 버튼 추가 phj, start
|
|
//기존
|
|
//sQuery += " ISNULL(SLACK_FIELD, '') + '|' + ISNULL(MID_CLOSE_SEQ, '') + '|' + ISNULL(PPCARD_CUSTID, '') + '|' + ISNULL(PACK_TRADE_DIV, '') + '|' + ISNULL(VIP_TY, '') ";
|
|
//변경
|
|
sQuery += " ISNULL(SLACK_FIELD, '') + '|' + ISNULL(MID_CLOSE_SEQ, '') + '|' + ISNULL(PPCARD_CUSTID, '') + '|' + ISNULL(PACK_TRADE_DIV, '') + '|' + ISNULL(VIP_TY, '') + '|' + ISNULL(HP_EXCLUDE_YN, '0')";
|
|
//#20170828 해피포인트 적립 제외 버튼 추가 phj, end
|
|
|
|
sQuery += " AS ETC_TR_HEADER ";
|
|
sQuery += " FROM POSLOG..ETC_SALE_HEADER ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND REG_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sREG_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetEtcTranDetail(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sREG_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.EtcTranDetail + "' + '|' + '000000' + '|' + CONVERT(VARCHAR, ISNULL(SEQ, 0)) + '|' + ISNULL(ORD_TIME, '') + '|' + ISNULL(FLOOR_CD, '') + '|' + ISNULL(TBL_NO, '') + '|' + ";
|
|
sQuery += " ISNULL(SUB_SHOP_CD, '') + '|' + ISNULL(ITEM_PLU_CD, '') + '|' + ISNULL(ITEM_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(SALE_QTY, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SALE_PRC, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(SALE_AMT, 0)) + '|' + ISNULL(FLAVOUR_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(FLAVOUR_WEIGHT, 0)) + '|' + ISNULL(ITEM_INPUT_DIV, '') + '|' + ISNULL(ITEM_BAR_CD, '') + '|' + ";
|
|
sQuery += " ISNULL(TAKE_IN_OUT_DIV, '') + '|' + ISNULL(ITEM_TAX_DIV, '') + '|' + ISNULL(TAX_AMT_INCLUDE_YN, '') + '|' + ISNULL(TAXRATE_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(APPLY_TAX_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SVC_FEE_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SVC_FEE_VAT, 0)) + '|' + ";
|
|
sQuery += " ISNULL(SVC_TAXREATE_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(BILL_AMT, 0)) + '|' + ISNULL(NONSALES_RSN_CD, '') + '|' + ISNULL(DC_DIV, '') + '|' + ISNULL(DC_TYPE, '') + '|' + CONVERT(VARCHAR, ISNULL(DC_RATE, 0)) + '|' + CONVERT(VARCHAR, ISNULL(ITEM_DC_AMT, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(SUM_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(CPI_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(CPI_DC_AMT, 0)) + '|' + ISNULL(COOP_CARD_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(COOP_CARD_DC_AMT, 0)) + '|' + ISNULL(POINT_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(POINT_DC_AMT, 0)) + '|' + ";
|
|
sQuery += " ISNULL(CPN_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(CPN_DC_AMT, 0)) + '|' + ISNULL(EMP_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(EMP_DC_AMT, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SET_DC_AMT, 0)) + '|' + ISNULL(ETC_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(ETC_DC_AMT, 0)) + '|' + ISNULL(EXCEP_DC_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(EXCEP_DC_AMT, 0)) + '|' + ISNULL(PACK_DIV, '') + '|' + ";
|
|
sQuery += " ISNULL(SET_MENU_CD, '') + '|' + ISNULL(SUBPRC_MENU_KEY_DIV, '') + '|' + ISNULL(CPI_PRESENT_DIV, '') + '|' + CONVERT(VARCHAR, ISNULL(BILLSPR_NO, 0)) + '|' + ISNULL(SALE_GIFT_NO, '') + '|' + ISNULL(CPN_NO, '') + '|' + ISNULL(SLACK_FIELD, '') + '|' + ISNULL(DISPO_ITEM_DIV, '') + '|' + ISNULL(CANCEL_DIV, '') + '|' + ISNULL(NOTAX_DIV, '0') AS ETC_TR_DETAIL";
|
|
sQuery += " FROM POSLOG..ETC_SALE_DETAIL ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND REG_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sREG_NO);
|
|
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetEtcTranPay(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sREG_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.EtcTranPay + "' + '|' + '000000' + '|' + CONVERT(VARCHAR, ISNULL(SEQ, 0)) + '|' + ISNULL(PAY_WAY_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(PAY_AMT, 0)) + '|' + ISNULL(PAY_DTL_CD_01, '') + '|' + ISNULL(PAY_DTL_CD_02, '') + '|' + ";
|
|
sQuery += " ISNULL(PAY_DTL_CD_03, '') + '|' + ISNULL(PAY_DTL_CD_04, '') + '|' + ISNULL(PAY_DTL_CD_05, '') + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_01, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_02, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(QTY_ENTRY_03, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_04, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_05, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_01, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_02, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(AMT_ENTRY_03, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_04, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_05, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_06, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_07, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(AMT_ENTRY_08, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_09, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_10, 0)) + '|' + ISNULL(OCCUR_ENTRY_01, '') + '|' + ISNULL(OCCUR_ENTRY_02, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_03, '') + '|' + ISNULL(OCCUR_ENTRY_04, '') + '|' + ISNULL(OCCUR_ENTRY_05, '') + '|' + ISNULL(OCCUR_ENTRY_06, '') + '|' + ISNULL(OCCUR_ENTRY_07, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_08, '') + '|' + ISNULL(OCCUR_ENTRY_09, '') + '|' + ISNULL(OCCUR_ENTRY_10, '') + '|' + ISNULL(OCCUR_ENTRY_11, '') + '|' + ISNULL(OCCUR_ENTRY_12, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_13, '') + '|' + ISNULL(OCCUR_ENTRY_14, '') + '|' + ISNULL(OCCUR_ENTRY_15, '') + '|' + ISNULL(OCCUR_ENTRY_16, '') + '|' + ISNULL(OCCUR_ENTRY_17, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_18, '') + '|' + ISNULL(OCCUR_ENTRY_19, '') + '|' + ISNULL(OCCUR_ENTRY_20, '') + '|' + ISNULL(OCCUR_ENTRY_21, '') + '|' + ISNULL(OCCUR_ENTRY_22, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_23, '') + '|' + ISNULL(OCCUR_ENTRY_24, '') + '|' + ISNULL(OCCUR_ENTRY_25, '') + '|' + CONVERT(VARCHAR, ISNULL(BILLSPR_NO, 0)) + '|' + ISNULL(CANCEL_DIV, '') AS ETC_TR_PAY";
|
|
sQuery += " FROM POSLOG..ETC_SALE_PAY ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND REG_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sREG_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetEtcTranEtc(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sREG_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.EtcTranEtc + "' + '|' + '000000' + '|' + CONVERT(VARCHAR, ISNULL(SEQ, 0)) + '|' + ISNULL(ETC_WAY_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(ETC_AMT, 0)) + '|' + ";
|
|
sQuery += " ISNULL(ETC_DTL_CD_01, '') + '|' + ISNULL(ETC_DTL_CD_02, '') + '|' + ISNULL(ETC_DTL_CD_03, '') + '|' + ISNULL(ETC_DTL_CD_04, '') + '|' + ISNULL(ETC_DTL_CD_05, '') + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(QTY_ENTRY_01, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_02, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_03, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_04, 0)) + '|' + CONVERT(VARCHAR, ISNULL(QTY_ENTRY_05, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(AMT_ENTRY_01, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_02, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_03, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_04, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_05, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(AMT_ENTRY_06, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_07, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_08, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_09, 0)) + '|' + CONVERT(VARCHAR, ISNULL(AMT_ENTRY_10, 0)) + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_01, '') + '|' + ISNULL(OCCUR_ENTRY_02, '') + '|' + ISNULL(OCCUR_ENTRY_03, '') + '|' + ISNULL(OCCUR_ENTRY_04, '') + '|' + ISNULL(OCCUR_ENTRY_05, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_06, '') + '|' + ISNULL(OCCUR_ENTRY_07, '') + '|' + ISNULL(OCCUR_ENTRY_08, '') + '|' + ISNULL(OCCUR_ENTRY_09, '') + '|' + ISNULL(OCCUR_ENTRY_10, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_11, '') + '|' + ISNULL(OCCUR_ENTRY_12, '') + '|' + ISNULL(OCCUR_ENTRY_13, '') + '|' + ISNULL(OCCUR_ENTRY_14, '') + '|' + ISNULL(OCCUR_ENTRY_15, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_16, '') + '|' + ISNULL(OCCUR_ENTRY_17, '') + '|' + ISNULL(OCCUR_ENTRY_18, '') + '|' + ISNULL(OCCUR_ENTRY_19, '') + '|' + ISNULL(OCCUR_ENTRY_20, '') + '|' + ";
|
|
sQuery += " ISNULL(OCCUR_ENTRY_21, '') + '|' + ISNULL(OCCUR_ENTRY_22, '') + '|' + ISNULL(OCCUR_ENTRY_23, '') + '|' + ISNULL(OCCUR_ENTRY_24, '') + '|' + ISNULL(OCCUR_ENTRY_25, '') + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(BILLSPR_NO, 0)) + '|' + ISNULL(CANCEL_DIV, '') AS ETC_TR_ETC";
|
|
sQuery += " FROM POSLOG..ETC_SALE_ETC ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND REG_NO = '{4}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sREG_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetEtcTranDpst(string sCMP_CD, string sSTOR_CD, string sSALE_DT, string sPOS_NO, string sREG_NO)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.EtcTranDpst + "' + '|' + '000000' + '|' + CONVERT(VARCHAR, ISNULL(SEQ, 0)) + '|' + ISNULL(DPST_WTHDR_TYPE, '') + '|' + ISNULL(DPST_WTHDR_ACC_CD, '') + '|' + ISNULL(DPST_WTHDR_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(DPST_WTHDR_QTY, 0)) + '|' + ";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(DPST_WTHDR_AMT, 0)) + '|' + ISNULL(DPST_WTHDR_NM, '') + '|' + ISNULL(CUST_NO, '') + '|' + ISNULL(STOR_PAY_TYPE, '') + '|' + ISNULL(ETC_REASON, '') + '|' + ISNULL(SLACK_FIELD_01, '') + '|' + ISNULL(SLACK_FIELD_02, '') + '|' + ISNULL(SLACK_FIELD_03, '') + '|' + ";
|
|
sQuery += " ISNULL(SLACK_FIELD_04, '') + '|' + ISNULL(SLACK_FIELD_05, '') AS TR_DPST ";
|
|
sQuery += " FROM POSLOG..ETC_SALE_DPST_WTHDR ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND POS_NO = '{3}' ";
|
|
sQuery += " AND REG_NO = '{4}' ";
|
|
|
|
sSQL = string.Format( sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD
|
|
, sPOS_NO
|
|
, sREG_NO);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
#endregion
|
|
|
|
#region 05 - ETC Journal 전송
|
|
public void ETCJournalSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
Hashtable htData = null;
|
|
string sSendFlag = string.Empty;
|
|
string sCmpCd = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sRegNo = string.Empty;
|
|
string sTradeNo = string.Empty;
|
|
try
|
|
{
|
|
// 전송할 Journal 데이터 생성
|
|
htData = GetEtcJournalData(ref dtReturn);
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sCmpCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "CMP_CD");
|
|
sStorCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "STOR_CD");
|
|
sSaleDt = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SALE_DT");
|
|
sPosNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "POS_NO");
|
|
sRegNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "REG_NO");
|
|
sTradeNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "TRADE_NO");
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlPort),
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlTimeout),
|
|
new string[] { sCmpCd, m_cPosStatus.Base.BrandCd, sStorCd, sSaleDt, sPosNo, sTradeNo },
|
|
ItemConst.COMM_MSG_TYPE.ETCJNRL,
|
|
htData);
|
|
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
EtcJournalFlgUpdate(sCmpCd, sStorCd, sPosNo, sSaleDt, sRegNo, sSendFlag);
|
|
}
|
|
}
|
|
|
|
private int EtcJournalFlgUpdate(string sCmpCd, string sStorCd, string sPosNo, string sSaleDt, string sRegNo, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "") return iRet;
|
|
if (sStorCd.Trim() == "") return iRet;
|
|
if (sPosNo.Trim() == "") return iRet;
|
|
if (sSaleDt.Trim() == "") return iRet;
|
|
if (sRegNo.Trim() == "") return iRet;
|
|
|
|
sQuery += " UPDATE POSLOG..ETC_SALE_JOURNAL ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
sQuery += " AND POS_NO = '" + sPosNo + "' ";
|
|
sQuery += " AND REG_NO = '" + sRegNo + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
public Hashtable GetEtcJournalData(ref DataTable dtReturn)
|
|
{
|
|
Hashtable htReturn = null;
|
|
string sQuery = string.Empty;
|
|
|
|
string sCmpCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sRegNo = string.Empty;
|
|
string sTradeNo = string.Empty;
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
sQuery += " SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, SALE_DT, STOR_CD, POS_NO, REG_NO ";
|
|
sQuery += " , TRADE_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT ";
|
|
sQuery += " , SYS_TIME, PIC_NO, BILL_AMT, JOURNAL_DATA ";
|
|
sQuery += " FROM POSLOG..ETC_SALE_JOURNAL ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN, SALE_DT, REG_NO ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
htReturn = MakeJournalJsonData(drTempReturn);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 htReturn;
|
|
}
|
|
#endregion
|
|
|
|
#region 06 - Cashier Test Log 전송
|
|
public void CashierTestLogSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
Hashtable htData = null;
|
|
string sSendFlag = string.Empty;
|
|
string sCmpCd = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sSeq = string.Empty;
|
|
try
|
|
{
|
|
// 전송할 승인로그 데이터 생성
|
|
htData = GetCashierTestLog(ref dtReturn);
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sCmpCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "CMP_CD");
|
|
sStorCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "STOR_CD");
|
|
sSaleDt = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SALE_DT");
|
|
sPosNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "POS_NO");
|
|
sSeq = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SEQ_NO");
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlPort),
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlTimeout),
|
|
new string[] { sCmpCd, m_cPosStatus.Base.BrandCd, sStorCd, sSaleDt, sPosNo, "00000" },
|
|
ItemConst.COMM_MSG_TYPE.TESTLOG,
|
|
htData);
|
|
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
CashierTestLogFlgUpdate(sCmpCd, sStorCd, sPosNo, sSaleDt, sSeq, sSendFlag);
|
|
}
|
|
}
|
|
|
|
private int CashierTestLogFlgUpdate(string sCmpCd, string sStorCd, string sPosNo, string sSaleDt, string sSeq, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "") return iRet;
|
|
if (sSaleDt.Trim() == "") return iRet;
|
|
if (sStorCd.Trim() == "") return iRet;
|
|
if (sPosNo.Trim() == "") return iRet;
|
|
if (sSeq.Trim() == "") return iRet;
|
|
|
|
sQuery = " UPDATE POSLOG..TR_CASHIER_TEST ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
sQuery += " AND POS_NO = '" + sPosNo + "' ";
|
|
sQuery += " AND SEQ_NO = '" + sSeq + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
public Hashtable GetCashierTestLog(ref DataTable dtReturn)
|
|
{
|
|
Hashtable htReturn = null;
|
|
string sQuery = string.Empty;
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
sQuery = " SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, SALE_DT, STOR_CD, POS_NO, SEQ_NO, TEST_KIND, TEST_DATE ";
|
|
sQuery += " , CASHIER_NO, TEST_ENTRY_ID, PASS_CNT, TEST_CNT, TEST_PASS_YN ";
|
|
sQuery += " , SEND_YN, REG_DATE, UPD_DATE ";
|
|
sQuery += " FROM POSLOG..TR_CASHIER_TEST ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN, SALE_DT, SEQ_NO ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
htReturn = MakeCashierTestLogJsonData(drTempReturn);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 htReturn;
|
|
}
|
|
|
|
private Hashtable MakeCashierTestLogJsonData(DataRow drData)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
// 01 - 회사코드
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.CmpCd, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.CmpCd));
|
|
// 02 - 판매 일자
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.SaleDt, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.SaleDt));
|
|
// 03 - 점포 코드
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.StorCd, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.StorCd));
|
|
// 04 - 포스 번호
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.PosNo, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.PosNo));
|
|
// 05 - 순번
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.SeqNo, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.SeqNo));
|
|
// 06 - 시험 종류
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.TestKind, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.TestKind));
|
|
// 07 - 시험 일시
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.TestDate, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.TestDate));
|
|
// 08 - 계산원 번호
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.CashierNo, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.CashierNo));
|
|
// 09 - 시험항목 ID
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.TestEntryId, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.TestEntryId));
|
|
// 10 - 정답 항목 수
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.PassCnt, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.PassCnt));
|
|
// 11 - 시험 항목 수
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.TestCnt, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.TestCnt));
|
|
// 12 - 시험 합격 여부
|
|
htData.Add(Column.IQ_CASHIER_TEST_LOG_REQ.DATA.TestPassYn, CmUtil.GetDataRowStr(drData, Column.IQ_CASHIER_TEST_LOG_REQ.DATA.TestPassYn));
|
|
}
|
|
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 htData;
|
|
}
|
|
#endregion
|
|
|
|
#region 07 - 도로공사(고속도로 휴게소 입점 POS) 매출 I/F XML파일 생성
|
|
public void MakeTranToExProcess()
|
|
{
|
|
string sendFlag = string.Empty;
|
|
string sCmpCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sTradeNo = string.Empty;
|
|
|
|
DataTable dtReturn = null;
|
|
try
|
|
{
|
|
// 전송할 데이터 조회
|
|
GetTranInfo(ref dtReturn);
|
|
|
|
if(dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sendFlag = "0"; // 0:미전송, 1:전송, 8:파일생성, 9:에러
|
|
|
|
DataRow dr = dtReturn.Rows[0];
|
|
sCmpCd = CmUtil.GetDataRowStr(dr, "CMP_CD");
|
|
sSaleDt = CmUtil.GetDataRowStr(dr, "SALE_DT");
|
|
sStorCd = CmUtil.GetDataRowStr(dr, "STOR_CD");
|
|
sPosNo = CmUtil.GetDataRowStr(dr, "POS_NO");
|
|
sTradeNo = CmUtil.GetDataRowStr(dr, "TRADE_NO");
|
|
|
|
DataTable dtTRHeader = GetTranHeaderForEx(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
DataTable dtTRDetail = GetTranDetailForEx(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
DataTable dtTRCashData = GetTranCashDataForEx(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
DataTable dtTRCardData = GetTranCardDataForEx(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
|
|
XmlDocument doc = new XmlDocument();
|
|
XmlDeclaration docClaration = doc.CreateXmlDeclaration("1.0", null, null);
|
|
XmlElement root = doc.DocumentElement;
|
|
doc.InsertBefore(docClaration, root);
|
|
|
|
|
|
XmlElement erestNode = doc.CreateElement("EREST");
|
|
doc.AppendChild(erestNode);
|
|
|
|
MakeXmlHeader(ref doc, ref erestNode, dtTRHeader);
|
|
MakeXmlDetail(ref doc, ref erestNode, dtTRDetail);
|
|
MakeXmlCashData(ref doc, ref erestNode, dtTRCashData);
|
|
MakeXmlCardData(ref doc, ref erestNode, dtTRCardData);
|
|
|
|
// 매출 TRAN XML 파일 생성
|
|
string sFileNm = "H1" + "_" + sCmpCd + "_" + sStorCd + "_" + sPosNo + "_" + sSaleDt + "_" + sTradeNo + ".xml";
|
|
doc.Save(BaseCom.NxDataPath + "SEND\\EX\\" + sFileNm);
|
|
|
|
sendFlag = "8";
|
|
}
|
|
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 (함수명))
|
|
"도로공사 매출XML 파일 생성 에러-" + sSaleDt + "/" + sStorCd + "/" + sPosNo + "/" + sTradeNo + ":" + ex.Message);
|
|
sendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
OutsideTranSendFlgUpdate(sCmpCd, sStorCd, sPosNo, sSaleDt, sTradeNo, sendFlag);
|
|
}
|
|
}
|
|
|
|
private int OutsideTranSendFlgUpdate(string pCompanyCd, string pStoreNo, string pPosNo, string pSaleDate, string pTradeNo, string pSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = "";
|
|
|
|
try
|
|
{
|
|
if (pCompanyCd.Trim() == "") return iRet;
|
|
if (pSaleDate.Trim() == "") return iRet;
|
|
if (pStoreNo.Trim() == "") return iRet;
|
|
if (pPosNo.Trim() == "") return iRet;
|
|
if (pTradeNo.Trim() == "" || pTradeNo.Trim() == "99999") return iRet;
|
|
|
|
sQuery = "UPDATE POSLOG..TR_SALE_HEADER ";
|
|
sQuery += " SET OUT_SEND_YN = '" + pSendFlag + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + pCompanyCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + pStoreNo + "' ";
|
|
sQuery += " AND SALE_DT = '" + pSaleDate + "' ";
|
|
sQuery += " AND POS_NO = '" + pPosNo + "' ";
|
|
sQuery += " AND TRADE_NO = '" + pTradeNo + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
private void GetTranInfo(ref DataTable dtReturn)
|
|
{
|
|
string sQuery = string.Empty;
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery = " SELECT TOP 1 \n"
|
|
+ " CMP_CD, SALE_DT, STOR_CD, POS_NO, TRADE_NO \n"
|
|
+ " FROM POSLOG..TR_SALE_HEADER \n"
|
|
+ " WHERE TRADE_KINDPER = '00' \n"
|
|
+ " AND OUT_SEND_YN = '0' \n"
|
|
+ " AND TRAIN_MODE_YN = '0' \n"
|
|
+ " AND TRADE_KINDPER = '00' \n"
|
|
+ " ORDER BY SALE_DT, TRADE_NO, OUT_SEND_YN \n";
|
|
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn);
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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);
|
|
}
|
|
}
|
|
|
|
private void MakeXmlHeader(ref XmlDocument doc, ref XmlElement upperNode, DataTable dtData)
|
|
{
|
|
try
|
|
{
|
|
DataRow dr = dtData.Rows[0];
|
|
//-----------------------------------------------------------------------------------------
|
|
// TXJM-FD
|
|
//-----------------------------------------------------------------------------------------
|
|
XmlElement TXJMNode = doc.CreateElement("TXJM-FD");
|
|
|
|
TXJMNode.SetAttribute("SRID", "SL010"); // 1.전문ID (5)
|
|
TXJMNode.SetAttribute("RETCD", "0000"); // 2.전문적합성체크 (4)
|
|
TXJMNode.SetAttribute("TRHDR_CNT", "1"); // 3.헤더Count (2)
|
|
TXJMNode.SetAttribute("TRDTL_CNT", CmUtil.GetDataRowStr(dr, "TRDTL_CNT")); // 4.디테일Count (2)
|
|
TXJMNode.SetAttribute("TRCSH_CNT", CmUtil.GetDataRowStr(dr, "TRCSH_CNT")); // 5.현금Count (2)
|
|
TXJMNode.SetAttribute("TRCRD_CNT", CmUtil.GetDataRowStr(dr, "TRCRD_CNT")); // 6.카드Count (2)
|
|
TXJMNode.SetAttribute("TRCST_CNT", "0");
|
|
TXJMNode.SetAttribute("TRFOD_CNT", "0");
|
|
TXJMNode.SetAttribute("TRGFT_CNT", "0");
|
|
TXJMNode.SetAttribute("TRJCD_CNT", "0");
|
|
TXJMNode.SetAttribute("TRWES_CNT", "0");
|
|
TXJMNode.SetAttribute("TRPSQ_CNT", "0");
|
|
TXJMNode.SetAttribute("TRCSA_CNT", "0");
|
|
TXJMNode.SetAttribute("TRGFA_CNT", "0");
|
|
TXJMNode.SetAttribute("TRFOA_CNT", "0");
|
|
TXJMNode.SetAttribute("TRRFC_CNT", "0");
|
|
TXJMNode.SetAttribute("RUN_MODE", "T"); // T-테스트, R-정상
|
|
|
|
upperNode.AppendChild(TXJMNode);
|
|
|
|
//-----------------------------------------------------------------------------------------
|
|
// TRHDR
|
|
//-----------------------------------------------------------------------------------------
|
|
XmlElement TRHDRNode = doc.CreateElement("TRHDR");
|
|
|
|
//TRHDRNode.SetAttribute("SHOP_CD", m_cPosStatus.Base.ExStoreCd); // 7.매장코드 (9)
|
|
//TRHDRNode.SetAttribute("SHOP_CD", m_cPosStatus.Base.OutSDVendConNo); // 7.매장코드 (9)
|
|
TRHDRNode.SetAttribute("SHOP_CD", m_cPosStatus.Mst.JOIN_STOR_CD); // 7.매장코드 (9)
|
|
TRHDRNode.SetAttribute("SALE_DATE", m_cPosStatus.Base.SaleDate); // 8.영업일자 (8)
|
|
TRHDRNode.SetAttribute("POS_NO", m_cPosStatus.Base.PosNo); // 9.포스번호 (2)
|
|
TRHDRNode.SetAttribute("BILL_NO", m_cPosStatus.Base.TradeNo.Substring(1, 4)); // 10.영수번호 (4)
|
|
TRHDRNode.SetAttribute("REGI_SEQ", "01"); // 11.정산차수 (2)
|
|
TRHDRNode.SetAttribute("SALE_YN", CmUtil.GetDataRowStr(dr, "SALE_YN")); // 12.판매여부 (1)
|
|
TRHDRNode.SetAttribute("TOT_SALE_AMT", CmUtil.GetDataRowStr(dr, "DCM_SALE_AMT")); // 13.총매출액 (12) AS-IS 에서 TOT_SALE_AMT 가 아닌 DCM_SALE_AMT 로 값을 채움
|
|
TRHDRNode.SetAttribute("TOT_DC_AMT", CmUtil.GetDataRowStr(dr, "TOT_DC_AMT")); // 14.총할인액 (12)
|
|
TRHDRNode.SetAttribute("SVC_TIP_AMT", CmUtil.GetDataRowStr(dr, "SVC_TIP_AMT")); // 15.봉사료 (12)
|
|
TRHDRNode.SetAttribute("TOT_ETC_AMT", CmUtil.GetDataRowStr(dr, "TOT_ETC_AMT")); // 16.기타에누리액 (12)
|
|
TRHDRNode.SetAttribute("DCM_SALE_AMT", CmUtil.GetDataRowStr(dr, "DCM_SALE_AMT")); // 17.실매출액 (12)
|
|
TRHDRNode.SetAttribute("VAT_SALE_AMT", CmUtil.GetDataRowStr(dr, "VAT_SALE_AMT")); // 18.과세매출액 (12)
|
|
TRHDRNode.SetAttribute("VAT_AMT", CmUtil.GetDataRowStr(dr, "VAT_AMT")); // 19.부가세 (12)
|
|
TRHDRNode.SetAttribute("NO_VAT_SALE_AMT", CmUtil.GetDataRowStr(dr, "NO_VAT_SALE_AMT")); // 20.면세매출액 (12)
|
|
TRHDRNode.SetAttribute("NO_TAX_SALE_AMT", CmUtil.GetDataRowStr(dr, "NO_TAX_SALE_AMT")); // 21.순매출액 (12)
|
|
TRHDRNode.SetAttribute("EXP_PAY_AMT", CmUtil.GetDataRowStr(dr, "EXP_PAY_AMT")); // 22.받을금액 (12)
|
|
TRHDRNode.SetAttribute("GST_PAY_AMT", CmUtil.GetDataRowStr(dr, "GST_PAY_AMT")); // 23.받은금액 (12)
|
|
TRHDRNode.SetAttribute("RET_PAY_AMT", CmUtil.GetDataRowStr(dr, "RET_PAY_AMT")); // 24.거스름돈 (12)
|
|
TRHDRNode.SetAttribute("CASH_AMT", CmUtil.GetDataRowStr(dr, "CASH_AMT")); // 25.결제액-현금 (12)
|
|
TRHDRNode.SetAttribute("CRD_CARD_AMT", CmUtil.GetDataRowStr(dr, "CRD_CARD_AMT")); // 26.결제액-신용카드 (12)
|
|
TRHDRNode.SetAttribute("WES_AMT", "0"); // 27.결제액-외상 (12)
|
|
TRHDRNode.SetAttribute("TK_GFT_AMT", "0"); // 28.결제액-상품권 (12)
|
|
TRHDRNode.SetAttribute("TK_FOD_AMT", "0"); // 29.결제액-식권 (12)
|
|
TRHDRNode.SetAttribute("CST_POINT_AMT", "0"); // 30.결제액-회원포인트 (12)
|
|
TRHDRNode.SetAttribute("JCD_CARD_AMT", "0"); // 31.결제액-제휴카드(사용) (12)
|
|
TRHDRNode.SetAttribute("DC_GEN_AMT", CmUtil.GetDataRowStr(dr, "TOT_DC_AMT")); // 32.할인액-일반 (12)
|
|
TRHDRNode.SetAttribute("DC_SVC_AMT", "0"); // 33.할인액-서비스 (12)
|
|
TRHDRNode.SetAttribute("DC_PCD_AMT", "0"); // 34.할인액-제휴카드 (12)
|
|
TRHDRNode.SetAttribute("DC_CPN_AMT", "0"); // 35.할인액-쿠폰 (12)
|
|
TRHDRNode.SetAttribute("DC_CST_AMT", "0"); // 36.할인액-회원 (12)
|
|
TRHDRNode.SetAttribute("DC_TFD_AMT", "0"); // 37.할인액-식권 (12)
|
|
TRHDRNode.SetAttribute("DC_PRM_AMT", "0"); // 38.할인액-프로모션 (12)
|
|
TRHDRNode.SetAttribute("DC_CRD_AMT", "0"); // 39.할인액-신용카드현장할인 (12)
|
|
TRHDRNode.SetAttribute("DC_PACK_AMT", "0"); // 40.할인액-포장할인 (12)
|
|
TRHDRNode.SetAttribute("REPAY_CASH_AMT", CmUtil.GetDataRowStr(dr, "REPAY_CASH_AMT"));
|
|
TRHDRNode.SetAttribute("REPAY_TK_GFT_AMT", "0");
|
|
TRHDRNode.SetAttribute("CASH_BILL_AMT", CmUtil.GetDataRowStr(dr, "CASH_BILL_AMT"));
|
|
TRHDRNode.SetAttribute("DLV_ORDER_FG", "0");
|
|
TRHDRNode.SetAttribute("FD_TBL_CD", "000");
|
|
TRHDRNode.SetAttribute("FD_GST_CNT_T", "1");
|
|
TRHDRNode.SetAttribute("FD_GST_CNT_1", "1");
|
|
TRHDRNode.SetAttribute("FD_GST_CNT_2", "0");
|
|
TRHDRNode.SetAttribute("FD_GST_CNT_3", "0");
|
|
TRHDRNode.SetAttribute("FD_GST_CNT_4", "0");
|
|
TRHDRNode.SetAttribute("ORG_BILL_NO", CmUtil.GetDataRowStr(dr, "SALE_YN") == "N" ? m_cPosStatus.Base.StoreNo + CmUtil.GetDataRowStr(dr, "ORG_BILL_NO") : "");
|
|
TRHDRNode.SetAttribute("ORDER_NO", m_cPosStatus.Base.TradeNo.Substring(1, 4));
|
|
TRHDRNode.SetAttribute("INS_DT", CmUtil.GetDataRowStr(dr, "INS_DT"));
|
|
TRHDRNode.SetAttribute("EMP_NO", "0000");
|
|
TRHDRNode.SetAttribute("PAY_OUT_DT", CmUtil.GetDataRowStr(dr, "PAY_OUT_DT"));
|
|
TRHDRNode.SetAttribute("CST_NM", "");
|
|
TRHDRNode.SetAttribute("DLV_EMP_NO", "");
|
|
TRHDRNode.SetAttribute("DLV_START_DT", "");
|
|
TRHDRNode.SetAttribute("DLV_PAYIN_EMP_NO", "");
|
|
TRHDRNode.SetAttribute("DLV_PAYIN_DT", "");
|
|
TRHDRNode.SetAttribute("NEW_DLV_ADDR_YN", "N");
|
|
TRHDRNode.SetAttribute("DLV_ADDR", "");
|
|
TRHDRNode.SetAttribute("DLV_ADDR_DTL", "");
|
|
TRHDRNode.SetAttribute("NEW_DLV_TEL_NO_YN", "N");
|
|
TRHDRNode.SetAttribute("DLV_TEL_NO", "");
|
|
TRHDRNode.SetAttribute("DLV_CL_CD", "");
|
|
TRHDRNode.SetAttribute("DLV_CM_CD", "");
|
|
TRHDRNode.SetAttribute("TRAVEL_CD", "");
|
|
TRHDRNode.SetAttribute("RSV_NO", "");
|
|
TRHDRNode.SetAttribute("PRE_PAY_CASH", "0");
|
|
TRHDRNode.SetAttribute("PRE_PAY_CARD", "0");
|
|
TRHDRNode.SetAttribute("RSV_USER_NM", "");
|
|
TRHDRNode.SetAttribute("RSV_USER_TEL_NO", "");
|
|
TRHDRNode.SetAttribute("PREPAY_AMT", "0");
|
|
TRHDRNode.SetAttribute("COM_AMT", "0");
|
|
|
|
upperNode.AppendChild(TRHDRNode);
|
|
}
|
|
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);
|
|
}
|
|
}
|
|
|
|
private XmlDocument MakeXmlDetail(ref XmlDocument doc, ref XmlElement upperNode, DataTable dtData)
|
|
{
|
|
try
|
|
{
|
|
//-----------------------------------------------------------------------------------------
|
|
// TRDTL
|
|
//-----------------------------------------------------------------------------------------
|
|
XmlElement TRDTLNode = doc.CreateElement("TRDTL");
|
|
upperNode.AppendChild(TRDTLNode);
|
|
|
|
if (dtData == null) return doc;
|
|
|
|
for(int nLoop = 0;nLoop < dtData.Rows.Count;nLoop++)
|
|
{
|
|
DataRow dr = dtData.Rows[nLoop];
|
|
XmlElement DATADtlNode = doc.CreateElement("DATA-DTL");
|
|
|
|
DATADtlNode.SetAttribute("DTL_NO", string.Format("{0:0000}", nLoop + 1)); // 76.디테일번호 (4)
|
|
DATADtlNode.SetAttribute("REGI_SEQ", "01"); // 77.정산차수 (2)
|
|
DATADtlNode.SetAttribute("SALE_YN", CmUtil.GetDataRowStr(dr, "SALE_YN")); // 78.판매여부 (1)
|
|
DATADtlNode.SetAttribute("PROD_CD", CmUtil.GetDataRowStr(dr, "PROD_CD")); // 79.상품코드 (20)
|
|
DATADtlNode.SetAttribute("PROD_TYPE_FG", CmUtil.GetDataRowStr(dr, "PROD_TYPE_FG")); // 80.상품유형구분 (1)
|
|
//DATADtlNode.SetAttribute("CORNER_CD", m_cPosStatus.Base.ExCornerCd); // 81.코너코드 (4)
|
|
//DATADtlNode.SetAttribute("CORNER_CD", m_cPosStatus.Base.OutSDVendCrnrCd); // 81.코너코드 (4)
|
|
DATADtlNode.SetAttribute("CORNER_CD", m_cPosStatus.Mst.JOIN_BRAND_CD); // 81.코너코드 (4)
|
|
|
|
DATADtlNode.SetAttribute("CHG_BILL_NO", ""); // 82.교환권번호(외식-푸드코드) (4)
|
|
DATADtlNode.SetAttribute("TAX_YN", CmUtil.GetDataRowStr(dr, "TAX_YN")); // 83.과세여부 (1)
|
|
DATADtlNode.SetAttribute("DLV_PACK_FG", CmUtil.GetDataRowStr(dr, "DLV_PACK_FG")); // 84.배달포장구분 (1)
|
|
DATADtlNode.SetAttribute("ORG_SALE_MG_CD", "0000"); // 85.원천판매마진코드 (4)
|
|
DATADtlNode.SetAttribute("ORG_SALE_UPRC", "0"); // 86.원천판매단가 (12)
|
|
DATADtlNode.SetAttribute("NORMAL_UPRC", CmUtil.GetDataRowStr(dr, "NORMAL_UPRC")); // 87.정상판매단가 (12)
|
|
DATADtlNode.SetAttribute("SALE_MG_CD", "0000"); // 88.판매마진코드 (4)
|
|
DATADtlNode.SetAttribute("SALE_QTY", CmUtil.GetDataRowStr(dr, "SALE_QTY")); // 89.판매수량 (9)
|
|
DATADtlNode.SetAttribute("SALE_UPRC", CmUtil.GetDataRowStr(dr, "SALE_UPRC")); // 90.판매단가 (12)
|
|
DATADtlNode.SetAttribute("SALE_AMT", CmUtil.GetDataRowStr(dr, "SALE_AMT")); // 91.매출액 (12)
|
|
DATADtlNode.SetAttribute("DC_AMT", CmUtil.GetDataRowStr(dr, "DC_AMT")); // 92.할인액 (12)
|
|
DATADtlNode.SetAttribute("ETC_AMT", CmUtil.GetDataRowStr(dr, "ETC_AMT")); // 93.기타에누리액(식권짜투리/에누리-끝전) (12)
|
|
DATADtlNode.SetAttribute("SVC_TIP_AMT", CmUtil.GetDataRowStr(dr, "SVC_TIP_AMT")); // 94.봉사료 (12)
|
|
DATADtlNode.SetAttribute("DCM_SALE_AMT", CmUtil.GetDataRowStr(dr, "DCM_SALE_AMT")); // 95.실매출액 (12)
|
|
DATADtlNode.SetAttribute("VAT_AMT", CmUtil.GetDataRowStr(dr, "VAT_AMT")); // 96.부가세 (12)
|
|
DATADtlNode.SetAttribute("SVC_CD", ""); // 97.서비스코드 (1)
|
|
DATADtlNode.SetAttribute("TK_CPN_CD", ""); // 98.쿠폰코드 (3)
|
|
DATADtlNode.SetAttribute("DC_AMT_GEN", CmUtil.GetDataRowStr(dr, "DC_AMT")); // 99.할인액-일반 (12)
|
|
DATADtlNode.SetAttribute("DC_AMT_SVC", "0"); // 100.할인액-서비스 (12)
|
|
DATADtlNode.SetAttribute("DC_AMT_JCD", "0"); // 101.할인액-제휴카드 (12)
|
|
DATADtlNode.SetAttribute("DC_AMT_CPN", "0"); // 102.할인액-쿠폰 (12)
|
|
DATADtlNode.SetAttribute("DC_AMT_CST", "0"); // 103.할인액-회원 (12)
|
|
DATADtlNode.SetAttribute("DC_AMT_FOD", "0"); // 104.할인액-식권 (12)
|
|
DATADtlNode.SetAttribute("DC_AMT_PRM", "0"); // 105.할인액-프로모션 (12)
|
|
DATADtlNode.SetAttribute("DC_AMT_CRD", "0"); // 106.할인액-신용카드-현장할인 (12)
|
|
DATADtlNode.SetAttribute("DC_AMT_PACK", "0"); // 107.할인액-포장 (12)
|
|
DATADtlNode.SetAttribute("CST_SALE_POINT", "0"); // 108.회원-매출포인트 (8)
|
|
DATADtlNode.SetAttribute("CST_USE_POINT", "0"); // 109.회원-사용포인트 (8)
|
|
DATADtlNode.SetAttribute("PRM_PROC_YN", "N"); // 110.프로모션-적용여부 (1)
|
|
DATADtlNode.SetAttribute("PRM_CD", ""); // 111.프로모션-코드 (4)
|
|
DATADtlNode.SetAttribute("PRM_SEQ", ""); // 112.프로모션-차수 (2)
|
|
DATADtlNode.SetAttribute("SDA_CD", ""); // 113.외식-사이드-속성코드 (10)
|
|
DATADtlNode.SetAttribute("SDS_ORG_DTL_NO", ""); // 114.외식-사이드-선택메뉴-원천DTLNO(재설정필요) (4)
|
|
DATADtlNode.SetAttribute("INS_DT", CmUtil.GetDataRowStr(dr, "INS_DT")); // 115.POS등록일시 (14)
|
|
DATADtlNode.SetAttribute("EMP_NO", "0000"); // 116.판매원코드 (4)
|
|
DATADtlNode.SetAttribute("PREPAY_AMT", "0"); // 117.선수입금액 (12)
|
|
DATADtlNode.SetAttribute("COM_AMT", "0"); // 118.이익금액 (12)
|
|
|
|
TRDTLNode.AppendChild(DATADtlNode);
|
|
}
|
|
}
|
|
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 doc;
|
|
}
|
|
|
|
private XmlDocument MakeXmlCashData(ref XmlDocument doc, ref XmlElement upperNode, DataTable dtData)
|
|
{
|
|
try
|
|
{
|
|
//-----------------------------------------------------------------------------------------
|
|
// TRCSH
|
|
//-----------------------------------------------------------------------------------------
|
|
XmlElement TRCSHNode = doc.CreateElement("TRCSH");
|
|
upperNode.AppendChild(TRCSHNode);
|
|
|
|
if (dtData == null) return doc;
|
|
|
|
// VAN사 터미널ID 취득
|
|
string sTermNo = PosMstManager.GetMstVan(ItemConst.TR_ITEM_ID.CREDITCARD_ITEM, ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD, PosMst.MST_VAN.DATA.APPR_ID);
|
|
|
|
for (int nLoop = 0; nLoop < dtData.Rows.Count; nLoop++)
|
|
{
|
|
DataRow dr = dtData.Rows[nLoop];
|
|
XmlElement DATANode = doc.CreateElement("DATA-CSH");
|
|
|
|
DATANode.SetAttribute("LINE_NO", string.Format("{0:0000}", nLoop + 1)); // 119.라인번호 (4)
|
|
DATANode.SetAttribute("SEQ_NO", "01");
|
|
DATANode.SetAttribute("REGI_SEQ", "01");
|
|
DATANode.SetAttribute("SALE_YN", CmUtil.GetDataRowStr(dr, "SALE_YN")); // 판매여부 (1)
|
|
DATANode.SetAttribute("VAN_CD", "02"); // VAN사코드 (2)
|
|
//DATANode.SetAttribute("CORNER_CD", m_cPosStatus.Base.ExCornerCd); // 코너코드 (4)
|
|
//DATANode.SetAttribute("CORNER_CD", m_cPosStatus.Base.OutSDVendCrnrCd); // 코너코드 (4)
|
|
DATANode.SetAttribute("CORNER_CD", m_cPosStatus.Mst.JOIN_BRAND_CD); // 코너코드 (4)
|
|
|
|
DATANode.SetAttribute("CASH_AMT", CmUtil.GetDataRowStr(dr, "APPR_AMT"));
|
|
DATANode.SetAttribute("APPR_AMT", CmUtil.GetDataRowStr(dr, "APPR_AMT")); // 승인금액 (12)
|
|
DATANode.SetAttribute("SVC_TIP_AMT", CmUtil.GetDataRowStr(dr, "SVC_TIP_AMT")); // 봉사료 (12)
|
|
DATANode.SetAttribute("VAT_AMT", CmUtil.GetDataRowStr(dr, "VAT_AMT")); // 부가세 (12)
|
|
DATANode.SetAttribute("APPR_PROC_FG", CmUtil.GetDataRowStr(dr, "APPR_PROC_FG"));// 승인처리구분 (1)
|
|
DATANode.SetAttribute("APPR_IDT_TYPE", CmUtil.GetDataRowStr(dr, "APPR_IDT_TYPE")); // 승인거래자유형 (1)
|
|
DATANode.SetAttribute("APPR_IDT_FG", CmUtil.GetDataRowStr(dr, "APPR_IDT_FG")); // 승인인식구분 (1)
|
|
DATANode.SetAttribute("CARD_IN_FG", CmUtil.GetDataRowStr(dr, "CARD_IN_FG")); // 카드입력구분 (1)
|
|
DATANode.SetAttribute("APPR_IDT_NO", CmUtil.GetDataRowStr(dr, "APPR_IDT_NO")); // 승인인식번호 (20)
|
|
DATANode.SetAttribute("APPR_DATE", CmUtil.GetDataRowStr(dr, "APPR_DATE")); // 승인일자 (8)
|
|
DATANode.SetAttribute("APPR_TIME", CmUtil.GetDataRowStr(dr, "APPR_TIME")); // 승인시각 (6)
|
|
DATANode.SetAttribute("APPR_NO", CmUtil.GetDataRowStr(dr, "APPR_NO")); // 승인번호 (16)
|
|
DATANode.SetAttribute("APPR_MSG", ""); // 승인응답메시지 (200)
|
|
DATANode.SetAttribute("VAN_TERM_NO", sTermNo); // VAN사터미널번호 (15)
|
|
DATANode.SetAttribute("VAN_SLIP_NO", ""); // VAN사전표번호 (12)
|
|
DATANode.SetAttribute("ORG_APPR_DATE", ""); // 원거래승인일자 (8)
|
|
DATANode.SetAttribute("ORG_APPR_NO", ""); // 원거래승인번호 (16)
|
|
DATANode.SetAttribute("APPR_LOG_NO", ""); // 승인로그번호 (5)
|
|
DATANode.SetAttribute("INS_DT", CmUtil.GetDataRowStr(dr, "INS_DT")); // 등록일시 (14)
|
|
DATANode.SetAttribute("EMP_NO", "0000"); // 판매원코드 (4)
|
|
DATANode.SetAttribute("EX_CD", "0"); // 통화코드 (2)
|
|
DATANode.SetAttribute("EX_KRW", "0"); // 환율 (12)
|
|
DATANode.SetAttribute("EX_EXP_AMT", "0"); // 통화-받을금액 (12)
|
|
DATANode.SetAttribute("EX_IN_AMT", "0"); // 통화-지불액 (12)
|
|
DATANode.SetAttribute("EX_RET_AMT", "0"); // 통화-거스름 (12)
|
|
DATANode.SetAttribute("KR_RET_AMT", "0"); // 원화-거스름 (12)
|
|
DATANode.SetAttribute("EX_PAY_AMT", "0"); // 통화-결제액(통화지불액-통화거스름) (12)
|
|
DATANode.SetAttribute("KR_PAY_AMT", "0"); // 원화-결제액(통화결제액*환율) (12)
|
|
DATANode.SetAttribute("KR_ETC_AMT", "0"); // 원화-에누리액(원화결제액-현금결제액-원화거스름) (12)
|
|
DATANode.SetAttribute("PRE_PAY_FG", "0");
|
|
|
|
TRCSHNode.AppendChild(DATANode);
|
|
}
|
|
}
|
|
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 doc;
|
|
}
|
|
|
|
private XmlDocument MakeXmlCardData(ref XmlDocument doc, ref XmlElement upperNode, DataTable dtData)
|
|
{
|
|
try
|
|
{
|
|
//-----------------------------------------------------------------------------------------
|
|
// TRCRD
|
|
//-----------------------------------------------------------------------------------------
|
|
XmlElement TRCRDNode = doc.CreateElement("TRCRD");
|
|
upperNode.AppendChild(TRCRDNode);
|
|
|
|
if (dtData == null) return doc;
|
|
|
|
for (int nLoop = 0; nLoop < dtData.Rows.Count; nLoop++)
|
|
{
|
|
DataRow dr = dtData.Rows[nLoop];
|
|
XmlElement DATANode = doc.CreateElement("DATA-CRD");
|
|
|
|
DATANode.SetAttribute("LINE_NO", string.Format("{0:0000}", nLoop + 1)); // 라인번호 (4)
|
|
DATANode.SetAttribute("SEQ_NO", CmUtil.GetDataRowStr(dr, "SEQ_NO")); // 일련번호 (2)
|
|
DATANode.SetAttribute("REGI_SEQ", "01"); // 정산차수 (2)
|
|
DATANode.SetAttribute("SALE_YN", CmUtil.GetDataRowStr(dr, "SALE_YN")); // 매출구분 (1)
|
|
DATANode.SetAttribute("VAN_CD", CmUtil.GetDataRowStr(dr, "VAN_CD")); // VAN사코드 (2)
|
|
//DATANode.SetAttribute("CORNER_CD", m_cPosStatus.Base.ExCornerCd); // 코너코드 (4)
|
|
//DATANode.SetAttribute("CORNER_CD", m_cPosStatus.Base.OutSDVendCrnrCd); // 코너코드 (4)
|
|
DATANode.SetAttribute("CORNER_CD", m_cPosStatus.Mst.JOIN_BRAND_CD); // 코너코드 (4)
|
|
|
|
DATANode.SetAttribute("APPR_PROC_FG", CmUtil.GetDataRowStr(dr, "APPR_PROC_FG"));// 승인구분 (1)
|
|
DATANode.SetAttribute("CRD_CARD_NO", CmUtil.GetDataRowStr(dr, "CRD_CARD_NO")); // 카드번호 (20)
|
|
DATANode.SetAttribute("APPR_REQ_AMT", CmUtil.GetDataRowStr(dr, "APPR_REQ_AMT"));// 승인요청금액 (12)
|
|
DATANode.SetAttribute("SVC_TIP_AMT", CmUtil.GetDataRowStr(dr, "SVC_TIP_AMT")); // 봉사료 (12)
|
|
DATANode.SetAttribute("VAT_AMT", CmUtil.GetDataRowStr(dr, "VAT_AMT")); // 부가세 (12)
|
|
DATANode.SetAttribute("INST_MM_FG", CmUtil.GetDataRowStr(dr, "INST_MM_FG")); // 할부개월구분 (1)
|
|
DATANode.SetAttribute("INST_MM_CNT", CmUtil.GetDataRowStr(dr, "INST_MM_CNT")); // 할부개월수 (2)
|
|
DATANode.SetAttribute("VALID_TERM", "000000"); // 유효기간 (6)
|
|
DATANode.SetAttribute("SIGN_PAD_YN", CmUtil.GetDataRowStr(dr, "SIGN_PAD_YN")); // 사인패드사용여부 (1)
|
|
DATANode.SetAttribute("CARD_IN_FG", CmUtil.GetDataRowStr(dr, "CARD_IN_FG")); // 카드입력구분 (1)
|
|
DATANode.SetAttribute("APPR_DATE", CmUtil.GetDataRowStr(dr, "APPR_DATE")); // 승인일자 (8)
|
|
DATANode.SetAttribute("APPR_TIME", CmUtil.GetDataRowStr(dr, "APPR_TIME")); // 승인시간 (6)
|
|
DATANode.SetAttribute("APPR_NO", CmUtil.GetDataRowStr(dr, "APPR_NO")); // 승인번호 (16)
|
|
DATANode.SetAttribute("CRDCP_CD", ""); // 카드사코드 (3)
|
|
DATANode.SetAttribute("ISS_CRDCP_CD", ""); // 카드발급사코드 (4)
|
|
DATANode.SetAttribute("ISS_CRDCP_NM", ""); // 카드발급사명 (40)
|
|
DATANode.SetAttribute("PUR_CRDCP_CD", CmUtil.GetDataRowStr(dr, "PUR_CRDCP_CD"));// 카드매입사코드 (4)
|
|
DATANode.SetAttribute("PUR_CRDCP_NM", CmUtil.GetDataRowStr(dr, "PUR_CRDCP_NM").Trim());// 카드매입사명 (40)
|
|
DATANode.SetAttribute("APPR_AMT", CmUtil.GetDataRowStr(dr, "APPR_AMT")); // 승인금액(실제승인액)
|
|
DATANode.SetAttribute("APPR_DC_AMT", "0"); // 승인현장할인액 (12)
|
|
DATANode.SetAttribute("APPR_MSG", ""); // 승인응답메시지 (200)
|
|
DATANode.SetAttribute("VAN_TERM_NO", ""); // VAN사터미널번호 (15)
|
|
DATANode.SetAttribute("VAN_SLIP_NO", ""); // VAN사전표번호 (12)
|
|
DATANode.SetAttribute("CRDCP_TERM_NO", CmUtil.GetDataRowStr(dr, "CRDCP_TERM_NO").Trim()); // 카드사계약번호 (15)
|
|
DATANode.SetAttribute("ORG_APPR_DATE", ""); // 원거래승인일자 (8)
|
|
DATANode.SetAttribute("ORG_APPR_NO", ""); // 원거래승인번호 (16)
|
|
DATANode.SetAttribute("APPR_LOG_NO", ""); // 승인로그번호 (5)
|
|
DATANode.SetAttribute("INS_DT", CmUtil.GetDataRowStr(dr, "INS_DT")); // 등록일시 (14)
|
|
DATANode.SetAttribute("EMP_NO", "0000"); // 판매원번호 (4)
|
|
DATANode.SetAttribute("PRE_PAY_FG", "0"); // 선수금구분자 (1)
|
|
|
|
TRCRDNode.AppendChild(DATANode);
|
|
}
|
|
}
|
|
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 doc;
|
|
}
|
|
|
|
private DataTable GetTranHeaderForEx(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sSelQuery = string.Empty;
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
DataTable dtReturn = null;
|
|
try
|
|
{
|
|
sSelQuery = "SELECT CASE WHEN A.TRADE_DIV = '0' \n"
|
|
+ " THEN 'Y' \n"
|
|
+ " ELSE 'N' \n"
|
|
+ " END AS SALE_YN \n"
|
|
+ " , ISNULL(A.TOTSALE_AMT, 0) AS TOT_SALE_AMT \n"
|
|
+ " , ISNULL(A.TOTDC_AMT, 0) AS TOT_DC_AMT \n"
|
|
+ " , ISNULL(A.SVC_FEE_AMT, 0) AS SVC_TIP_AMT \n"
|
|
+ " , 0 AS TOT_ETC_AMT \n"
|
|
+ " , ISNULL(A.NET_SALE_AMT, 0) AS DCM_SALE_AMT \n"
|
|
+ " , ISNULL(A.TOT_VAT, 0) AS VAT_AMT \n"
|
|
+ " , ISNULL(A.NET_SALE_AMT, 0) - ISNULL(A.TOT_VAT, 0) AS NO_TAX_SALE_AMT \n"
|
|
+ " , ISNULL(A.NET_SALE_AMT, 0) AS EXP_PAY_AMT \n"
|
|
+ " , A.SALE_DT + A.PAY_TIME AS INS_DT \n"
|
|
+ " , A.SALE_DT + A.PAY_TIME AS PAY_OUT_DT \n"
|
|
+ " , A.ORG_BILLDT + A.POS_NO + SUBSTRING(A.ORG_BILL_NO, 2, 4) AS ORG_BILL_NO \n"
|
|
+ " , C.TRDTL_CNT AS TRDTL_CNT \n"
|
|
+ " , D.TRCSH_CNT AS TRCSH_CNT \n"
|
|
+ " , B.TRCRD_CNT AS TRCRD_CNT \n"
|
|
+ " , C.VAT_SALE_AMT AS VAT_SALE_AMT \n"
|
|
+ " , C.NO_VAT_SALE_AMT AS NO_VAT_SALE_AMT \n"
|
|
+ " , B.GST_PAY_AMT AS GST_PAY_AMT \n"
|
|
+ " , B.RET_PAY_AMT AS RET_PAY_AMT \n"
|
|
+ " , B.CASH_AMT AS CASH_AMT \n"
|
|
+ " , B.CRD_CARD_AMT AS CRD_CARD_AMT \n"
|
|
+ " , B.REPAY_CASH_AMT AS REPAY_CASH_AMT \n"
|
|
+ " , D.CASH_BILL_AMT AS CASH_BILL_AMT \n"
|
|
+ " FROM POSLOG..TR_SALE_HEADER A \n"
|
|
+ " , ( \n"
|
|
+ " SELECT SUM(CASE WHEN TSP.PAY_WAY_CD <> '02' \n"
|
|
+ " THEN ISNULL(TSP.AMT_ENTRY_01, 0) - ISNULL(TSP.AMT_ENTRY_02, 0) \n"
|
|
+ " ELSE 0 \n"
|
|
+ " END) AS CASH_AMT \n"
|
|
+ " , SUM(CASE WHEN TSP.PAY_WAY_CD = '02' \n"
|
|
+ " THEN 1 \n"
|
|
+ " ELSE 0 \n"
|
|
+ " END) AS TRCRD_CNT \n"
|
|
+ " , SUM(CASE WHEN TSP.PAY_WAY_CD = '02' \n"
|
|
+ " THEN ISNULL(TSP.AMT_ENTRY_01, 0) \n"
|
|
+ " ELSE 0 \n"
|
|
+ " END) AS CRD_CARD_AMT \n"
|
|
+ " , SUM(ISNULL(TSP.PAY_AMT, 0)) AS GST_PAY_AMT \n"
|
|
+ " , SUM(ISNULL(TSP.AMT_ENTRY_02, 0)) AS RET_PAY_AMT \n"
|
|
+ " , 0 AS REPAY_CASH_AMT \n"
|
|
+ " FROM POSLOG..TR_SALE_HEADER TSH \n"
|
|
+ " LEFT JOIN POSLOG..TR_SALE_PAY TSP \n"
|
|
+ " ON TSH.CMP_CD = TSP.CMP_CD \n"
|
|
+ " AND TSH.SALE_DT = TSP.SALE_DT \n"
|
|
+ " AND TSH.STOR_CD = TSP.STOR_CD \n"
|
|
+ " AND TSH.POS_NO = TSP.POS_NO \n"
|
|
+ " AND TSH.TRADE_NO = TSP.TRADE_NO \n"
|
|
+ " AND TSP.PAY_DTL_CD_05 = '1' \n"
|
|
+ " AND TSP.CANCEL_DIV = '0' \n"
|
|
+ " WHERE TSH.CMP_CD = '{0}' \n"
|
|
+ " AND TSH.SALE_DT = '{1}' \n"
|
|
+ " AND TSH.STOR_CD = '{2}' \n"
|
|
+ " AND TSH.POS_NO = '{3}' \n"
|
|
+ " AND TSH.TRADE_NO = '{4}' \n"
|
|
+ " AND TSH.TRAIN_MODE_YN = '0' \n"
|
|
+ " AND TSH.TRADE_KINDPER = '00' \n"
|
|
+ " ) B \n"
|
|
+ " , ( \n"
|
|
+ " SELECT SUM(CASE WHEN ISNULL(TSD.SALE_AMT, 0) = 0 \n"
|
|
+ " THEN 0 \n"
|
|
+ " ELSE 1 \n"
|
|
+ " END) AS TRDTL_CNT \n"
|
|
+ " , SUM(CASE WHEN ISNULL(TSD.APPLY_TAX_AMT, 0) = 0 \n"
|
|
+ " THEN 0 \n"
|
|
+ " ELSE ISNULL(TSD.BILL_AMT, 0) - ISNULL(TSD.APPLY_TAX_AMT, 0) \n"
|
|
+ " END) AS VAT_SALE_AMT \n"
|
|
+ " , SUM(CASE WHEN ISNULL(TSD.APPLY_TAX_AMT, 0) = 0 \n"
|
|
+ " THEN ISNULL(TSD.SALE_AMT, 0) \n"
|
|
+ " ELSE 0 \n"
|
|
+ " END) AS NO_VAT_SALE_AMT \n"
|
|
+ " FROM POSLOG..TR_SALE_HEADER TSH \n"
|
|
+ " LEFT JOIN POSLOG..TR_SALE_DETAIL TSD \n"
|
|
+ " ON TSH.CMP_CD = TSD.CMP_CD \n"
|
|
+ " AND TSH.SALE_DT = TSD.SALE_DT \n"
|
|
+ " AND TSH.STOR_CD = TSD.STOR_CD \n"
|
|
+ " AND TSH.POS_NO = TSD.POS_NO \n"
|
|
+ " AND TSH.TRADE_NO = TSD.TRADE_NO \n"
|
|
+ " AND TSD.CANCEL_DIV = '0' \n"
|
|
+ " WHERE TSH.CMP_CD = '{0}' \n"
|
|
+ " AND TSH.SALE_DT = '{1}' \n"
|
|
+ " AND TSH.STOR_CD = '{2}' \n"
|
|
+ " AND TSH.POS_NO = '{3}' \n"
|
|
+ " AND TSH.TRADE_NO = '{4}' \n"
|
|
+ " AND TSH.TRAIN_MODE_YN = '0' \n"
|
|
+ " AND TSH.TRADE_KINDPER = '00' \n"
|
|
+ " ) C \n"
|
|
+ " , ( \n"
|
|
+ " SELECT SUM(CASE WHEN TSE.ETC_WAY_CD = '00' \n"
|
|
+ " THEN 1 \n"
|
|
+ " ELSE 0 \n"
|
|
+ " END) AS TRCSH_CNT \n"
|
|
+ " , ISNULL(SUM(TSE.ETC_AMT), 0) AS CASH_BILL_AMT \n"
|
|
+ " FROM POSLOG..TR_SALE_HEADER TSH \n"
|
|
+ " LEFT JOIN POSLOG..TR_SALE_ETC TSE \n"
|
|
+ " ON TSH.CMP_CD = TSE.CMP_CD \n"
|
|
+ " AND TSH.SALE_DT = TSE.SALE_DT \n"
|
|
+ " AND TSH.STOR_CD = TSE.STOR_CD \n"
|
|
+ " AND TSH.POS_NO = TSE.POS_NO \n"
|
|
+ " AND TSH.TRADE_NO = TSE.TRADE_NO \n"
|
|
+ " AND TSE.ETC_WAY_CD = '00' \n"
|
|
+ " WHERE TSH.CMP_CD = '{0}' \n"
|
|
+ " AND TSH.SALE_DT = '{1}' \n"
|
|
+ " AND TSH.STOR_CD = '{2}' \n"
|
|
+ " AND TSH.POS_NO = '{3}' \n"
|
|
+ " AND TSH.TRADE_NO = '{4}' \n"
|
|
+ " AND TSH.TRAIN_MODE_YN = '0' \n"
|
|
+ " AND TSH.TRADE_KINDPER = '00' \n"
|
|
+ " ) D \n"
|
|
+ " WHERE A.CMP_CD = '{0}' \n"
|
|
+ " AND A.SALE_DT = '{1}' \n"
|
|
+ " AND A.STOR_CD = '{2}' \n"
|
|
+ " AND A.POS_NO = '{3}' \n"
|
|
+ " AND A.TRADE_NO = '{4}' \n"
|
|
+ " AND A.TRAIN_MODE_YN = '0' \n"
|
|
+ " AND A.TRADE_KINDPER = '00' \n";
|
|
|
|
sQuery = string.Format(sSelQuery, sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
}
|
|
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 dtReturn;
|
|
}
|
|
|
|
private DataTable GetTranDetailForEx(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sSelQuery = string.Empty;
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
DataTable dtReturn = null;
|
|
try
|
|
{
|
|
sSelQuery = "SELECT A.SEQ \n"
|
|
+ " , CASE WHEN B.TRADE_DIV = '0' \n"
|
|
+ " THEN 'Y' \n"
|
|
+ " ELSE 'N' \n"
|
|
+ " END AS SALE_YN \n"
|
|
+ " , C.ENTR_CMP_ITEM_CD AS PROD_CD \n"
|
|
+ " , CASE WHEN A.ITEM_DIV = '0' \n"
|
|
+ " THEN '0' \n"
|
|
+ " ELSE '1' \n"
|
|
+ " END AS PROD_TYPE_FG \n"
|
|
+ " , CASE WHEN A.ITEM_TAX_DIV = '0' OR A.NOTAX_DIV = '1' \n"
|
|
+ " THEN 'N' \n"
|
|
+ " ELSE 'Y' \n"
|
|
+ " END AS TAX_YN \n"
|
|
+ " , CASE WHEN A.TAKE_IN_OUT_DIV = '0' \n"
|
|
+ " THEN '0' \n"
|
|
+ " ELSE '2' \n"
|
|
+ " END AS DLV_PACK_FG \n"
|
|
+ " , CASE WHEN A.SALE_AMT = A.BILL_AMT \n"
|
|
+ " THEN A.SALE_PRC \n"
|
|
+ " ELSE A.BILL_AMT / A.SALE_QTY \n"
|
|
+ " END AS NORMAL_UPRC \n"
|
|
+ " , ISNULL(A.SALE_QTY, 0) AS SALE_QTY \n"
|
|
+ " , CASE WHEN A.SALE_AMT = A.BILL_AMT \n"
|
|
+ " THEN A.SALE_PRC \n"
|
|
+ " ELSE A.BILL_AMT / A.SALE_QTY \n"
|
|
+ " END AS SALE_UPRC \n"
|
|
+ " , ISNULL(A.BILL_AMT, 0) AS SALE_AMT \n"
|
|
+ " , ISNULL(A.ITEM_DC_AMT, 0) + ISNULL(A.SUM_DC_AMT, 0) + \n"
|
|
+ " ISNULL(A.CPI_DC_AMT, 0) + ISNULL(A.COOP_CARD_DC_AMT, 0) + \n"
|
|
+ " ISNULL(A.POINT_DC_AMT, 0) + ISNULL(A.CPN_DC_AMT, 0) + \n"
|
|
+ " ISNULL(A.EMP_DC_AMT, 0) + ISNULL(A.SET_DC_AMT, 0) + \n"
|
|
+ " ISNULL(A.ETC_DC_AMT, 0) + ISNULL(A.EXCEP_DC_AMT, 0) AS DC_AMT \n"
|
|
+ " , 0 AS ETC_AMT \n"
|
|
+ " , 0 AS SVC_TIP_AMT \n"
|
|
+ " , ISNULL(A.BILL_AMT, 0) AS DCM_SALE_AMT \n"
|
|
+ " , ISNULL(A.APPLY_TAX_AMT, 0) AS VAT_AMT \n"
|
|
+ " , B.SALE_DT + B.PAY_TIME AS INS_DT \n"
|
|
+ " FROM POSLOG..TR_SALE_DETAIL A \n"
|
|
+ " , POSLOG..TR_SALE_HEADER B \n"
|
|
+ " , POSMST..MST_OUT_SD_VEND_ITEM C \n"
|
|
+ " WHERE A.CMP_CD = '{0}' \n"
|
|
+ " AND A.SALE_DT = '{1}' \n"
|
|
+ " AND A.STOR_CD = '{2}' \n"
|
|
+ " AND A.POS_NO = '{3}' \n"
|
|
+ " AND A.TRADE_NO = '{4}' \n"
|
|
+ " AND A.CMP_CD = B.CMP_CD \n"
|
|
+ " AND A.SALE_DT = B.SALE_DT \n"
|
|
+ " AND A.STOR_CD = B.STOR_CD \n"
|
|
+ " AND A.POS_NO = B.POS_NO \n"
|
|
+ " AND A.TRADE_NO = B.TRADE_NO \n"
|
|
+ " AND A.CMP_CD = C.CMP_CD \n"
|
|
+ " AND A.ITEM_PLU_CD = C.ITEM_CD \n"
|
|
+ " AND B.TRAIN_MODE_YN = '0' \n"
|
|
+ " AND B.TRADE_KINDPER = '00' \n"
|
|
+ " AND A.CANCEL_DIV = '0' \n"
|
|
+ " AND C.USE_YN = '1' \n"
|
|
+ " ORDER BY A.SEQ \n";
|
|
|
|
sQuery = string.Format(sSelQuery, sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
}
|
|
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 dtReturn;
|
|
}
|
|
|
|
private DataTable GetTranCashDataForEx(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sSelQuery = string.Empty;
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
DataTable dtReturn = null;
|
|
try
|
|
{
|
|
sSelQuery = "SELECT CASE WHEN B.TRADE_DIV = '0' \n"
|
|
+ " THEN 'Y' \n"
|
|
+ " ELSE 'N' \n"
|
|
+ " END AS SALE_YN \n"
|
|
+ " , ISNULL(A.ETC_AMT, 0) AS APPR_AMT \n"
|
|
+ " , 0 AS SVC_TIP_AMT \n"
|
|
+ " , ISNULL(A.AMT_ENTRY_03, 0) AS VAT_AMT \n"
|
|
+ " , CASE WHEN A.OCCUR_ENTRY_09 = '0' \n"
|
|
+ " THEN '1' \n"
|
|
+ " ELSE '2' \n"
|
|
+ " END AS APPR_PROC_FG \n"
|
|
+ " , CASE WHEN A.OCCUR_ENTRY_08 = '0' \n"
|
|
+ " THEN '1' \n"
|
|
+ " ELSE '2' \n"
|
|
+ " END AS APPR_IDT_TYPE \n"
|
|
+ " , CASE WHEN SUBSTRING(A.OCCUR_ENTRY_01, 1, 2) = '01' \n"
|
|
+ " THEN '2' \n"
|
|
+ " ELSE '3' \n"
|
|
+ " END AS APPR_IDT_FG \n"
|
|
+ " , 'K' AS CARD_IN_FG \n"
|
|
+ " , A.OCCUR_ENTRY_01 AS APPR_IDT_NO \n"
|
|
+ " , A.OCCUR_ENTRY_03 AS APPR_DATE \n"
|
|
+ " , A.OCCUR_ENTRY_04 AS APPR_TIME \n"
|
|
+ " , A.OCCUR_ENTRY_02 AS APPR_NO \n"
|
|
+ " , A.OCCUR_ENTRY_03 + A.OCCUR_ENTRY_04 AS INS_DT \n"
|
|
+ " FROM POSLOG..TR_SALE_ETC A \n"
|
|
+ " , POSLOG..TR_SALE_HEADER B \n"
|
|
+ " WHERE A.CMP_CD = '{0}' \n"
|
|
+ " AND A.SALE_DT = '{1}' \n"
|
|
+ " AND A.STOR_CD = '{2}' \n"
|
|
+ " AND A.POS_NO = '{3}' \n"
|
|
+ " AND A.TRADE_NO = '{4}' \n"
|
|
+ " AND A.ETC_WAY_CD = '80' \n"
|
|
+ " AND A.ETC_DTL_CD_01 = '00' \n"
|
|
+ " AND A.CMP_CD = B.CMP_CD \n"
|
|
+ " AND A.STOR_CD = B.STOR_CD \n"
|
|
+ " AND A.POS_NO = B.POS_NO \n"
|
|
+ " AND A.TRADE_NO = B.TRADE_NO \n"
|
|
+ " AND B.TRAIN_MODE_YN = '0' \n"
|
|
+ " AND B.TRADE_KINDPER = '00' \n";
|
|
|
|
sQuery = string.Format(sSelQuery, sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
}
|
|
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 dtReturn;
|
|
}
|
|
|
|
private DataTable GetTranCardDataForEx(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo)
|
|
{
|
|
string sQuery = string.Empty;
|
|
string sSelQuery = string.Empty;
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
DataTable dtReturn = null;
|
|
try
|
|
{
|
|
sSelQuery = "SELECT '01' AS SEQ_NO \n"
|
|
+ " , '02' AS VAN_CD \n"
|
|
+ " , CASE WHEN B.TRADE_DIV = '0' \n"
|
|
+ " THEN 'Y' \n"
|
|
+ " ELSE 'N' \n"
|
|
+ " END AS SALE_YN \n"
|
|
+ " , CASE WHEN A.OCCUR_ENTRY_08 = '0' \n"
|
|
+ " THEN '1' \n"
|
|
+ " ELSE '2' \n"
|
|
+ " END AS APPR_PROC_FG \n"
|
|
+ " , A.OCCUR_ENTRY_01 AS CRD_CARD_NO \n"
|
|
+ " , ISNULL(A.PAY_AMT, 0) AS APPR_REQ_AMT \n"
|
|
+ " , 0 AS SVC_TIP_AMT \n"
|
|
+ " , ISNULL(A.PAY_AMT, 0) - ROUND(A.PAY_AMT / 1.1, 0) AS VAT_AMT \n"
|
|
+ " , CASE WHEN A.OCCUR_ENTRY_14 = '00' \n"
|
|
+ " THEN '0' \n"
|
|
+ " ELSE '1' \n"
|
|
+ " END AS INST_MM_FG \n"
|
|
+ " , A.OCCUR_ENTRY_14 AS INST_MM_CNT \n"
|
|
+ " , CASE WHEN A.OCCUR_ENTRY_17 = '0' \n"
|
|
+ " THEN 'N' \n"
|
|
+ " ELSE 'Y' \n"
|
|
+ " END AS SIGN_PAD_YN \n"
|
|
+ " , CASE WHEN A.OCCUR_ENTRY_05 = 'K' \n"
|
|
+ " THEN 'K' \n"
|
|
+ " ELSE 'S' \n"
|
|
+ " END AS CARD_IN_FG \n"
|
|
+ " , A.OCCUR_ENTRY_03 AS APPR_DATE \n"
|
|
+ " , A.OCCUR_ENTRY_04 AS APPR_TIME \n"
|
|
+ " , A.OCCUR_ENTRY_02 AS APPR_NO \n"
|
|
+ " , A.OCCUR_ENTRY_11 AS PUR_CRDCP_CD \n"
|
|
+ " , A.OCCUR_ENTRY_12 AS PUR_CRDCP_NM \n"
|
|
+ " , ISNULL(A.PAY_AMT, 0) AS APPR_AMT \n"
|
|
+ " , A.OCCUR_ENTRY_18 AS CRDCP_TERM_NO \n"
|
|
+ " , A.OCCUR_ENTRY_03 + A.OCCUR_ENTRY_04 AS INS_DT \n"
|
|
+ " FROM POSLOG..TR_SALE_PAY A \n"
|
|
+ " , POSLOG..TR_SALE_HEADER B \n"
|
|
+ " WHERE A.CMP_CD = '{0}' \n"
|
|
+ " AND A.SALE_DT = '{1}' \n"
|
|
+ " AND A.STOR_CD = '{2}' \n"
|
|
+ " AND A.POS_NO = '{3}' \n"
|
|
+ " AND A.TRADE_NO = '{4}' \n"
|
|
+ " AND A.PAY_WAY_CD = '02' \n"
|
|
+ " AND A.PAY_DTL_CD_05 = '1' \n"
|
|
+ " AND A.CANCEL_DIV = '0' \n"
|
|
+ " AND A.CMP_CD = B.CMP_CD \n"
|
|
+ " AND A.SALE_DT = B.SALE_DT \n"
|
|
+ " AND A.STOR_CD = B.STOR_CD \n"
|
|
+ " AND A.POS_NO = B.POS_NO \n"
|
|
+ " AND A.TRADE_NO = B.TRADE_NO \n"
|
|
+ " AND B.TRAIN_MODE_YN = '0' \n"
|
|
+ " AND B.TRADE_KINDPER = '00' \n";
|
|
|
|
sQuery = string.Format(sSelQuery, sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
}
|
|
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 dtReturn;
|
|
}
|
|
|
|
#endregion 07 - 도로공사(고속도로 휴게소 입점 POS) 매출 I/F XML파일 생성
|
|
|
|
#region 08 - 도로공사(고속도로 휴게소 입점 POS) 매출 전송
|
|
public void TranSendToExProcess()
|
|
{
|
|
string sCmpCd = "";
|
|
string sStoreNo = "";
|
|
string sPosNo = "";
|
|
string sSaleDate = "";
|
|
string sTradeNo = "";
|
|
string sendFlag = "8";
|
|
|
|
try
|
|
{
|
|
DirectoryInfo di = new DirectoryInfo(BaseCom.NxDataPath + "SEND\\EX\\");
|
|
FileInfo[] xmlFiles = di.GetFiles("*.xml");
|
|
|
|
if(xmlFiles.Length < 1)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
for(int nLoop = 0;nLoop < xmlFiles.Length;nLoop++)
|
|
{
|
|
// 도로공사 매출전송 파일은 한번에 5개씩만 보낸다.
|
|
if(nLoop >= 5)
|
|
{
|
|
break;
|
|
}
|
|
FileInfo fi = xmlFiles[nLoop];
|
|
|
|
string[] sFile = fi.Name.Split(new char[] {'.'}, StringSplitOptions.RemoveEmptyEntries);
|
|
string sFileFullName = fi.FullName;
|
|
string[] sFileName = sFile[0].Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
|
|
string sFileExtension = sFile[1];
|
|
|
|
string sFileType = sFileName[0].Trim();
|
|
sCmpCd = sFileName[1].Trim();
|
|
sStoreNo = sFileName[2].Trim();
|
|
sPosNo = sFileName[3].Trim();
|
|
sSaleDate = sFileName[4].Trim();
|
|
sTradeNo = sFileName[5].Trim();
|
|
|
|
string sUrl = string.Empty;
|
|
|
|
if(sFileType == "H1")
|
|
{
|
|
//sUrl = sExTranUrl;
|
|
sUrl = m_cPosStatus.Mst.ETC_IF_URL1;
|
|
}
|
|
else
|
|
{
|
|
//sUrl = sExCalcUrl;
|
|
sUrl = m_cPosStatus.Mst.ETC_IF_URL2;
|
|
}
|
|
|
|
XmlDocument doc = new XmlDocument();
|
|
doc.Load(sFileFullName);
|
|
|
|
string recvData = string.Empty;
|
|
if(Http_SendReceive(sUrl, doc, ref recvData) == BaseCom.OK)
|
|
{
|
|
if(recvData.IndexOf("RETCD=") > 0)
|
|
{
|
|
string sRetCd = recvData.Substring(recvData.IndexOf("RETCD=") + 6, 4);
|
|
|
|
if(sRetCd == "0000")
|
|
{
|
|
if (iErrorCount > 0)
|
|
iErrorCount -= 1;
|
|
sendFlag = "1";
|
|
fi.Delete();
|
|
System.Threading.Thread.Sleep(50);
|
|
}
|
|
else
|
|
{
|
|
iErrorCount += 1;
|
|
sendFlag = "9";
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
iErrorCount += 1;
|
|
sendFlag = "9";
|
|
}
|
|
}
|
|
}
|
|
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);
|
|
sendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
OutsideTranSendFlgUpdate(sCmpCd, sStoreNo, sPosNo, sSaleDate, sTradeNo, sendFlag);
|
|
}
|
|
}
|
|
|
|
private int Http_SendReceive(string sUrl, XmlDocument xmlDoc, ref string recvData)
|
|
{
|
|
int iRet = BaseCom.NG;
|
|
try
|
|
{
|
|
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl);
|
|
|
|
req.Method = "POST";
|
|
req.ContentType = "text/xml";
|
|
req.Timeout = 30 * 1000;
|
|
|
|
// create our stream to send
|
|
Stream webDataStream = req.GetRequestStream();
|
|
xmlDoc.Save(webDataStream);
|
|
webDataStream.Close();
|
|
|
|
// get the response from out stream
|
|
WebResponse resp = req.GetResponse();
|
|
webDataStream = resp.GetResponseStream();
|
|
|
|
// convert the result into a string
|
|
StreamReader respStreamReader = new StreamReader(webDataStream);
|
|
string respFromServer = respStreamReader.ReadToEnd();
|
|
|
|
recvData = respFromServer;
|
|
|
|
respStreamReader.Close();
|
|
|
|
iRet = BaseCom.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 iRet;
|
|
}
|
|
#endregion 08 - 도로공사(고속도로 휴게소 입점 POS) 매출 전송
|
|
|
|
#region 09 - 한국공항공사 매출 I/F
|
|
//public void TranSendToKacProcess()
|
|
//{
|
|
// string sCmpCd = string.Empty;
|
|
// string sSaleDt = string.Empty;
|
|
// string sStorCd = string.Empty;
|
|
// string sPosNo = string.Empty;
|
|
// string sTradeNo = string.Empty;
|
|
// string sendFlag = "0";
|
|
|
|
// DataTable dtReturn = null;
|
|
|
|
// try
|
|
// {
|
|
// // 전송할 데이터 조회
|
|
// GetTranInfo(ref dtReturn);
|
|
|
|
// if(dtReturn == null || dtReturn.Rows.Count == 0)
|
|
// {
|
|
// return;
|
|
// }
|
|
// else
|
|
// {
|
|
// iSendDataCnt += 1;
|
|
// }
|
|
|
|
// sendFlag = "0"; // 0:미전송, 1:전송, 9:에러
|
|
|
|
// DataRow dr = dtReturn.Rows[0];
|
|
// sCmpCd = CmUtil.GetDataRowStr(dr, "CMP_CD");
|
|
// sSaleDt = CmUtil.GetDataRowStr(dr, "SALE_DT");
|
|
// sStorCd = CmUtil.GetDataRowStr(dr, "STOR_CD");
|
|
// sPosNo = CmUtil.GetDataRowStr(dr, "POS_NO");
|
|
// sTradeNo = CmUtil.GetDataRowStr(dr, "TRADE_NO");
|
|
|
|
// Column.KACReceiptHeader header = new Column.KACReceiptHeader();
|
|
// ArrayList alKACItems = new ArrayList();
|
|
|
|
// // 전송할 매출 데이터 생성
|
|
// MakeTranToKacProcess(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo, ref header, ref alKACItems);
|
|
|
|
// string sReturn = SaveDataToDb("HEAD", sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo, header, alKACItems, null);
|
|
|
|
// if(sReturn == UserCom.RST_OK)
|
|
// {
|
|
// sendFlag = "1";
|
|
// }
|
|
// else
|
|
// {
|
|
// sendFlag = "9";
|
|
// }
|
|
// }
|
|
// 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);
|
|
// sendFlag = "9";
|
|
// }
|
|
// finally
|
|
// {
|
|
// // Flag Update
|
|
// OutsideTranSendFlgUpdate(sCmpCd, sStorCd, sPosNo, sSaleDt, sTradeNo, sendFlag);
|
|
// }
|
|
//}
|
|
///// <summary>
|
|
///// 매출저장
|
|
///// </summary>
|
|
///// <param name="sSendType"></param>
|
|
///// <param name="sCmpCd"></param>
|
|
///// <param name="sSaleDt"></param>
|
|
///// <param name="sStorCd"></param>
|
|
///// <param name="sPosNo"></param>
|
|
///// <param name="sTradeNo"></param>
|
|
///// <param name="cHeader"></param>
|
|
///// <param name="alItems"></param>
|
|
///// <returns></returns>
|
|
//public string SaveDataToDb(string sSendType, string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo, Column.KACReceiptHeader cHeader, ArrayList alItems, Column.KACCalcData cCalcData)
|
|
//{
|
|
// string sReturn = UserCom.RST_ERR;
|
|
|
|
// int iItemCount = 0;
|
|
// StringBuilder sbTranHeader = new StringBuilder("");
|
|
// StringBuilder sbTranItem = new StringBuilder("");
|
|
// try
|
|
// {
|
|
// //string sDbConNo = string.Format("{0, -10}", m_cPosStatus.Base.KacConNo);
|
|
// //string sDbConNo = string.Format("{0, -10}", m_cPosStatus.Base.OutSDVendConNo);
|
|
// string sDbConNo = string.Format("{0, -10}", m_cPosStatus.Mst.JOIN_STOR_CD);
|
|
// string sDbStorCd = string.Format("{0, -10}", sStorCd);
|
|
// string sDbPosNo = string.Format("{0, -10}", sPosNo);
|
|
// string sDbTradeNo = string.Format("{0, -30}", sTradeNo);
|
|
|
|
|
|
// if (sSendType == "HEAD")
|
|
// {
|
|
// sbTranHeader.Append(cHeader.CON_NO); // 계약번호(ERP상의 계약번호)
|
|
// sbTranHeader.Append(cHeader.SALE_DT); // 영업일자
|
|
// sbTranHeader.Append(cHeader.STORE_CD); // 점번호
|
|
// sbTranHeader.Append(cHeader.POS_NO); // POS번호
|
|
// sbTranHeader.Append(cHeader.RECEIPT_SEQ); // 순차적으로 증가되는 값
|
|
// sbTranHeader.Append(cHeader.RECEIPT_NO); // 영수증번호
|
|
// sbTranHeader.Append(cHeader.ITEM_QTY); // 아이템 건수
|
|
// sbTranHeader.Append(cHeader.SALE_TM); // 매출시간
|
|
// sbTranHeader.Append(cHeader.CANCEL_YN); // 영수증 취소 여부(0:정상, 1:취소)
|
|
// sbTranHeader.Append(cHeader.TOT_AMT); // 총매출금액
|
|
// sbTranHeader.Append(cHeader.SALE_AMT); // 매가금액(공급가액)
|
|
// sbTranHeader.Append(cHeader.TAX_AMT); // 부가세금액
|
|
// sbTranHeader.Append(cHeader.CASH_AMT); // 현금금액
|
|
// sbTranHeader.Append(cHeader.CARD_AMT); // 카드금액
|
|
// sbTranHeader.Append(cHeader.ETC_AMT); // 기타금액
|
|
// sbTranHeader.Append(cHeader.CASH_YN); // 복합결제유문 발행 여부(복합결제 : 0, 현금결제만 : 1)
|
|
// sbTranHeader.Append(cHeader.CASH_RECEIPT_YN); // 현금영수증 발행 여부(발행 : 0, 미발행 : 1)
|
|
// sbTranHeader.Append(cHeader.BUY_NM); // 구매자명
|
|
// sbTranHeader.Append(cHeader.BUY_COUN_CD); // 구매자국가코드
|
|
// sbTranHeader.Append(cHeader.BUY_SEX_CD); // 구매자성별
|
|
// sbTranHeader.Append(cHeader.BUY_BIRTHDAY); // 구매자생년월일
|
|
// sbTranHeader.Append(cHeader.BUY_AGE); // 구매자나이
|
|
// sbTranHeader.Append(cHeader.AIR_NO); // 항공기정보
|
|
// sbTranHeader.Append(cHeader.CREATE_DT); // 영수증생성일자
|
|
|
|
// foreach (Column.KACReceiptItem item in alItems)
|
|
// {
|
|
// sbTranItem.Append(item.CON_NO);
|
|
// sbTranItem.Append(item.SALE_DT);
|
|
// sbTranItem.Append(item.STORE_CD);
|
|
// sbTranItem.Append(item.POS_NO);
|
|
// sbTranItem.Append(item.RECEIPT_NO);
|
|
// sbTranItem.Append(item.PROC_SEQ);
|
|
// sbTranItem.Append(item.PROD_CD);
|
|
// sbTranItem.Append(item.PROD_NM);
|
|
// sbTranItem.Append(item.QTY);
|
|
// sbTranItem.Append(item.UNIT_PRICE);
|
|
// sbTranItem.Append(item.AMT);
|
|
// sbTranItem.Append(item.CREATE_DT);
|
|
|
|
// iItemCount++;
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// sbTranHeader.Append(cCalcData.CON_NO); // 계약번호
|
|
// sbTranHeader.Append(cCalcData.SALE_DT); // 영업일자
|
|
// sbTranHeader.Append(cCalcData.STORE_CD); // 점번호
|
|
// sbTranHeader.Append(cCalcData.POS_NO); // POS번호
|
|
// sbTranHeader.Append(cCalcData.RECEIPT_SEQ); // 순차적으로 증가되는 값
|
|
// sbTranHeader.Append(cCalcData.RECEIPT_NO); // 영수증번호
|
|
// sbTranHeader.Append(cCalcData.SALE_TM); // 매출일시
|
|
// sbTranHeader.Append(cCalcData.RECEIPT_QTY); // 매출건수
|
|
// sbTranHeader.Append(cCalcData.TOTAL_AMT); // 총매출금액
|
|
// sbTranHeader.Append(cCalcData.SALE_AMT); // 총공급가액
|
|
// sbTranHeader.Append(cCalcData.TAX_AMT); // 총부가세금액
|
|
// sbTranHeader.Append(cCalcData.CASH_AMT); // 총현금금액
|
|
// sbTranHeader.Append(cCalcData.CARD_AMT); // 총카드금액
|
|
// sbTranHeader.Append(cCalcData.ETC_AMT); // 총기타금액
|
|
// sbTranHeader.Append(cCalcData.CREATE_DT); // 생성일자
|
|
|
|
// iItemCount = int.Parse(cCalcData.RECEIPT_QTY.Trim()); // 아이템건수(마감은 총매출건수)
|
|
// }
|
|
|
|
// try
|
|
// {
|
|
// int iRet = ReceiptDB(sSendType, sDbConNo, sSaleDt, sDbStorCd, sDbPosNo, sDbTradeNo, sbTranHeader.ToString(), iItemCount, sbTranItem.ToString());
|
|
// if(iRet == 0)
|
|
// {
|
|
// sReturn = UserCom.RST_OK;
|
|
// }
|
|
// }
|
|
// catch(Exception ex){}
|
|
// }
|
|
// 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 sReturn;
|
|
//}
|
|
|
|
//private void MakeTranToKacProcess(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo, ref Column.KACReceiptHeader header, ref ArrayList alKACItems)
|
|
//{
|
|
// try
|
|
// {
|
|
// DataTable dtHeader = GetTranHeaderForKac(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
// DataTable dtDetail = GetTranDetailForKac(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
// DataTable dtCash = GetTranCashForKac(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
|
|
// double dBillAmt = 0; // 영수금액
|
|
// double dNetAmt = 0; // 순매출액(부가세제외)
|
|
// double dVatAmt = 0; // 부가세
|
|
// int iTotalItem = 0; // 아이템 개수
|
|
// int iSaleQty = 0; // 아이템 수량 합계
|
|
// double dSaleUprc = 0; // 아이템 단가 합계
|
|
// double dSaleAmt = 0; // 아이템 영수금액 합계
|
|
|
|
// string sSysDate = CmUtil.GetDataRowStr(dtHeader.Rows[0], "SYS_DT");
|
|
// string sSaleTm = CmUtil.GetDataRowStr(dtHeader.Rows[0], "PAY_TIME");
|
|
|
|
// int iSign = CmUtil.GetDataRowStr(dtHeader.Rows[0], "TRADE_DIV") == "0" ? 1 : -1;
|
|
// for (int nLoop = 0; nLoop < dtHeader.Rows.Count; nLoop++)
|
|
// {
|
|
// // 아이템은 최대 30개 까지만 전송
|
|
// if (nLoop > 29) break;
|
|
// DataRow drData = dtHeader.Rows[nLoop];
|
|
|
|
// //////////////////////////////////////////////////////////////
|
|
// // 영수증 정보 item(매출정보) //
|
|
// //////////////////////////////////////////////////////////////
|
|
// dBillAmt = iSign * CmUtil.GetDataRowDouble(drData, "BILL_AMT");
|
|
// dNetAmt = iSign * CmUtil.GetDataRowDouble(drData, "NET_TOT_AMT");
|
|
// dVatAmt = iSign * CmUtil.GetDataRowDouble(drData, "TAX_AMT");
|
|
|
|
// Column.KACReceiptItem item = new Column.KACReceiptItem();
|
|
|
|
// //item.CON_NO = m_cPosStatus.Base.KacConNo;
|
|
// //item.CON_NO = m_cPosStatus.Base.OutSDVendConNo;
|
|
// item.CON_NO = m_cPosStatus.Mst.JOIN_STOR_CD;
|
|
// item.SALE_DT = sSaleDt;
|
|
// item.STORE_CD = sStorCd;
|
|
// item.POS_NO = sPosNo;
|
|
// item.RECEIPT_NO = sTradeNo;
|
|
// item.PROC_SEQ = CmUtil.GetDataRowStr(drData, "SEQ");
|
|
// string sItemCd = CmUtil.GetDataRowStr(drData, "ITEM_PLU_CD");
|
|
// item.PROD_CD = sItemCd;
|
|
// item.PROD_NM = CmUtil.GetDataRowStr(SeletItemMstToItemCode(sItemCd).Rows[0], PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM);
|
|
// item.QTY = CmUtil.GetDataRowStr(drData, "SALE_QTY");
|
|
// item.UNIT_PRICE = CmUtil.GetDataRowStr(drData, "SALE_PRC");
|
|
// item.AMT = dBillAmt.ToString();
|
|
// item.CREATE_DT = sSysDate;
|
|
|
|
// // ArrayList에 영수증아이템 정보 추가
|
|
// alKACItems.Add(item);
|
|
|
|
// iSaleQty = iSaleQty + CmUtil.GetDataRowInt(drData, "SALE_QTY");
|
|
// dSaleUprc = dSaleUprc + CmUtil.GetDataRowDouble(drData, "SALE_PRC");
|
|
// dSaleAmt = dSaleAmt + dBillAmt;
|
|
|
|
// iTotalItem++;
|
|
// }
|
|
|
|
// //////////////////////////////////////////////////////////////
|
|
// // 영수증 정보 item(매출정보) - TOTAL AMOUNT //
|
|
// //////////////////////////////////////////////////////////////
|
|
// DataRow drDetail = dtDetail.Rows[0];
|
|
// double dTotAmt = iSign * CmUtil.GetDataRowDouble(drDetail, "TOTAL_AMT");
|
|
// double dCashAmt = iSign * CmUtil.GetDataRowDouble(drDetail, "CASH_AMT");
|
|
// double dCardAmt = iSign * CmUtil.GetDataRowDouble(drDetail, "CARD_AMT");
|
|
// double dEtcAmt = iSign * CmUtil.GetDataRowDouble(drDetail, "ETC_AMT");
|
|
// string sCashYn = CmUtil.GetDataRowStr(drDetail, "CASH_YN");
|
|
|
|
// //////////////////////////////////////////////////////////////
|
|
// // 영수증 정보 item(매출정보) - 현금영수증 발행 FLAG //
|
|
// //////////////////////////////////////////////////////////////
|
|
// DataRow drCash = dtCash.Rows[0];
|
|
// string sCashReceiptYn = CmUtil.GetDataRowStr(drCash, "CASH_RECEIPT_YN");
|
|
|
|
// //////////////////////////////////////////////////////////////
|
|
// // 영수증 정보 header(매출정보) //
|
|
// //////////////////////////////////////////////////////////////
|
|
// header.TRAN_TYPE = "TRAN";
|
|
// //header.CON_NO = m_cPosStatus.Base.KacConNo;
|
|
// //header.CON_NO = m_cPosStatus.Base.OutSDVendConNo;
|
|
// header.CON_NO = m_cPosStatus.Mst.JOIN_STOR_CD;
|
|
// header.SALE_DT = sSaleDt;
|
|
// header.STORE_CD = sStorCd;
|
|
// header.POS_NO = sPosNo;
|
|
// header.RECEIPT_SEQ = sTradeNo;
|
|
// header.RECEIPT_NO = sTradeNo;
|
|
// header.ITEM_QTY = iTotalItem.ToString();
|
|
// header.SALE_TM = sSaleTm;
|
|
// header.CANCEL_YN = CmUtil.GetDataRowStr(dtHeader.Rows[0], "TRADE_DIV");
|
|
// header.TOT_AMT = dTotAmt.ToString();
|
|
// header.SALE_AMT = dNetAmt.ToString();
|
|
// header.TAX_AMT = dVatAmt.ToString();
|
|
// header.CASH_AMT = dCashAmt.ToString();
|
|
// header.CARD_AMT = dCardAmt.ToString();
|
|
// header.ETC_AMT = dEtcAmt.ToString();
|
|
// header.CASH_YN = sCashYn;
|
|
// header.CASH_RECEIPT_YN = sCashReceiptYn;
|
|
// header.BUY_NM = "";
|
|
// header.BUY_COUN_CD = "";
|
|
// header.BUY_SEX_CD = "9";
|
|
// header.BUY_BIRTHDAY = "";
|
|
// header.BUY_AGE = "";
|
|
// header.AIR_NO = "";
|
|
// header.CREATE_DT = sSysDate;
|
|
// }
|
|
// 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);
|
|
// }
|
|
//}
|
|
|
|
//private DataTable GetTranHeaderForKac(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo)
|
|
//{
|
|
// string sQuery = string.Empty;
|
|
// StringBuilder sb = new StringBuilder();
|
|
|
|
// DataTable dtReturn = null;
|
|
// try
|
|
// {
|
|
// sb.Append("SELECT TSH.SYS_DT AS SYS_DT ");
|
|
// sb.Append(" , TSH.PAY_TIME AS PAY_TIME ");
|
|
// sb.Append(" , TSH.TRADE_NO AS TRADE_NO ");
|
|
// sb.Append(" , TSH.TRADE_DIV AS TRADE_DIV ");
|
|
// sb.Append(" , TSH.ORG_BILL_NO AS VOID_NO ");
|
|
// sb.Append(" , TSD.* ");
|
|
// sb.Append(" , ISNULL(TSH.NET_SALE_AMT, 0) - ISNULL(TSH.TOT_VAT, 0) AS NET_TOT_AMT ");
|
|
// sb.Append(" , ISNULL(TSH.TOT_VAT, 0) AS TAX_AMT ");
|
|
// sb.Append(" FROM POSLOG..TR_SALE_HEADER TSH ");
|
|
// sb.Append(" , POSLOG..TR_SALE_DETAIL TSD ");
|
|
// sb.Append(" WHERE TSH.CMP_CD = '{0}' ");
|
|
// sb.Append(" AND TSH.SALE_DT = '{1}' ");
|
|
// sb.Append(" AND TSH.STOR_CD = '{2}' ");
|
|
// sb.Append(" AND TSH.POS_NO = '{3}' ");
|
|
// sb.Append(" AND TSH.TRADE_NO = '{4}' ");
|
|
// sb.Append(" AND TSH.CMP_CD = TSD.CMP_CD ");
|
|
// sb.Append(" AND TSH.SALE_DT = TSD.SALE_DT ");
|
|
// sb.Append(" AND TSH.STOR_CD = TSD.STOR_CD ");
|
|
// sb.Append(" AND TSH.POS_NO = TSD.POS_NO ");
|
|
// sb.Append(" AND TSH.TRADE_NO = TSD.TRADE_NO ");
|
|
|
|
// sQuery = string.Format(sb.ToString(), sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
|
|
// sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
// }
|
|
// 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 dtReturn;
|
|
//}
|
|
|
|
//private DataTable GetTranDetailForKac(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo)
|
|
//{
|
|
// string sQuery = string.Empty;
|
|
// StringBuilder sb = new StringBuilder();
|
|
|
|
// DataTable dtReturn = null;
|
|
// try
|
|
// {
|
|
// sb.Append("SELECT (ISNULL(A.CASH_AMT, 0) + ISNULL(B.CARD_AMT, 0) + ISNULL(C.ETC_AMT, 0)) AS TOTAL_AMT ");
|
|
// sb.Append(" , ISNULL(A.CASH_AMT, 0) AS CASH_AMT ");
|
|
// sb.Append(" , ISNULL(B.CARD_AMT, 0) AS CARD_AMT ");
|
|
// sb.Append(" , ISNULL(C.ETC_AMT, 0) AS ETC_AMT ");
|
|
// sb.Append(" , CASE WHEN ((A.CASH_AMT <> 0) AND (B.CARD_AMT = 0) AND (C.ETC_AMT = 0)) ");
|
|
// sb.Append(" THEN '1' ");
|
|
// sb.Append(" ELSE '0' ");
|
|
// sb.Append(" END AS CASH_YN ");
|
|
// sb.Append(" FROM ( ");
|
|
// sb.Append(" SELECT SUM(ISNULL(PAY_AMT, 0)) AS CASH_AMT ");
|
|
// sb.Append(" FROM POSLOG..TR_SALE_PAY ");
|
|
// sb.Append(" WHERE CMP_CD = '{0}' ");
|
|
// sb.Append(" AND SALE_DT = '{1}' ");
|
|
// sb.Append(" AND STOR_CD = '{2}' ");
|
|
// sb.Append(" AND POS_NO = '{3}' ");
|
|
// sb.Append(" AND TRADE_NO = '{4}' ");
|
|
// sb.Append(" AND PAY_WAY_CD = '" + ItemConst.TR_ITEM_ID.CASH_ITEM + "' ");
|
|
// sb.Append(" ) A ");
|
|
// sb.Append(" , ( ");
|
|
// sb.Append(" SELECT SUM(ISNULL(PAY_AMT, 0)) AS CARD_AMT ");
|
|
// sb.Append(" FROM POSLOG..TR_SALE_PAY ");
|
|
// sb.Append(" WHERE CMP_CD = '{0}' ");
|
|
// sb.Append(" AND SALE_DT = '{1}' ");
|
|
// sb.Append(" AND STOR_CD = '{2}' ");
|
|
// sb.Append(" AND POS_NO = '{3}' ");
|
|
// sb.Append(" AND TRADE_NO = '{4}' ");
|
|
// sb.Append(" AND PAY_WAY_CD = '" + ItemConst.TR_ITEM_ID.CREDITCARD_ITEM + "' ");
|
|
// sb.Append(" ) B ");
|
|
// sb.Append(" , ( ");
|
|
// sb.Append(" SELECT SUM(ISNULL(PAY_AMT, 0)) AS ETC_AMT ");
|
|
// sb.Append(" FROM POSLOG..TR_SALE_PAY ");
|
|
// sb.Append(" WHERE CMP_CD = '{0}' ");
|
|
// sb.Append(" AND SALE_DT = '{1}' ");
|
|
// sb.Append(" AND STOR_CD = '{2}' ");
|
|
// sb.Append(" AND POS_NO = '{3}' ");
|
|
// sb.Append(" AND TRADE_NO = '{4}' ");
|
|
// sb.Append(" AND PAY_WAY_CD <> '" + ItemConst.TR_ITEM_ID.CASH_ITEM + "' ");
|
|
// sb.Append(" AND PAY_WAY_CD <> '" + ItemConst.TR_ITEM_ID.CREDITCARD_ITEM + "' ");
|
|
// sb.Append(" ) C ");
|
|
|
|
// sQuery = string.Format(sb.ToString(), sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
|
|
// sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
// }
|
|
// 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 dtReturn;
|
|
//}
|
|
|
|
//private DataTable GetTranCashForKac(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo)
|
|
//{
|
|
// string sQuery = string.Empty;
|
|
// StringBuilder sb = new StringBuilder();
|
|
|
|
// DataTable dtReturn = null;
|
|
// try
|
|
// {
|
|
// sb.Append("SELECT TSH.TRADE_NO AS BILL_NO ");
|
|
// sb.Append(" , TSH.ORG_BILL_NO AS VOID_NO ");
|
|
// sb.Append(" , TSH.TRADE_DIV AS SALEH_DIV ");
|
|
// sb.Append(" , CASE WHEN (ISNULL(TSE.OCCUR_ENTRY_02, 0) = 0) ");
|
|
// sb.Append(" THEN '0' ");
|
|
// sb.Append(" ELSE '1' ");
|
|
// sb.Append(" END AS CASH_RECEIPT_YN ");
|
|
// sb.Append(" FROM POSLOG..TR_SALE_HEADER TSH ");
|
|
// sb.Append(" LEFT JOIN POSLOG..TR_SALE_ETC TSE ");
|
|
// sb.Append(" ON TSH.CMP_CD = TSE.CMP_CD ");
|
|
// sb.Append(" AND TSH.SALE_DT = TSE.SALE_DT ");
|
|
// sb.Append(" AND TSH.STOR_CD = TSE.STOR_CD ");
|
|
// sb.Append(" AND TSH.POS_NO = TSE.POS_NO ");
|
|
// sb.Append(" AND TSH.TRADE_NO = TSE.TRADE_NO ");
|
|
// sb.Append(" AND TSE.ETC_WAY_CD = '" + ItemConst.TR_ITEM_ID.ETC_INFO.CASHBILL + "' ");
|
|
// sb.Append(" WHERE TSH.CMP_CD = '{0}' ");
|
|
// sb.Append(" AND TSH.SALE_DT = '{1}' ");
|
|
// sb.Append(" AND TSH.STOR_CD = '{2}' ");
|
|
// sb.Append(" AND TSH.POS_NO = '{3}' ");
|
|
// sb.Append(" AND TSH.TRADE_NO = '{4}' ");
|
|
|
|
// sQuery = string.Format(sb.ToString(), sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
|
|
// sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
// }
|
|
// 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 dtReturn;
|
|
//}
|
|
///// <summary>
|
|
///// 상품마스터 조회
|
|
///// </summary>
|
|
///// <param name="sItemCode"></param>
|
|
///// <returns></returns>
|
|
//private DataTable SeletItemMstToItemCode(string sItemCode)
|
|
//{
|
|
// string sQuery = "";
|
|
|
|
// DataTable dtReturn = null;
|
|
|
|
// try
|
|
// {
|
|
// // 상품코드로 상품 마스터 조회
|
|
// sQuery += " SELECT * FROM POSMST..MST_ITEM ";
|
|
// sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
|
|
// sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
|
|
// sQuery += " AND SUB_STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
|
|
// sQuery += " AND ITEM_CD = '" + sItemCode + "'";
|
|
// sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
|
|
|
|
// sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
// }
|
|
// 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 dtReturn;
|
|
//}
|
|
#endregion 09 - 한국공항공사 매출 I/F
|
|
|
|
#region 10 - 긴급 메세지 읽음 전송(MST_EMG_NOTE)
|
|
/// <summary>
|
|
/// 긴급메세지 전송 메인
|
|
/// </summary>
|
|
public void EmgNoteSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
Hashtable htData = null;
|
|
string sSendFlag = string.Empty;
|
|
string sMsgCode = string.Empty;
|
|
string sStartDT = string.Empty;
|
|
string sMsgDiv = string.Empty;
|
|
try
|
|
{
|
|
// 전송할 Journal 데이터 생성
|
|
htData = GetEmgNoteData(ref dtReturn);
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sStartDT = CmUtil.GetDataRowStr(dtReturn.Rows[0], Column.IQ_EMG_NOTE_SEND.DATA.START_DT);
|
|
sMsgCode = CmUtil.GetDataRowStr(dtReturn.Rows[0], Column.IQ_EMG_NOTE_SEND.DATA.MSG_CODE);
|
|
sMsgDiv = CmUtil.GetDataRowStr(dtReturn.Rows[0], Column.IQ_EMG_NOTE_SEND.DATA.MSG_DIV);
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlPort),
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlTimeout),
|
|
new string[] { m_cPosStatus.Base.CmpCd, m_cPosStatus.Base.BrandCd, m_cPosStatus.Base.StoreNo, m_cPosStatus.Base.SaleDate, m_cPosStatus.Base.PosNo, m_cPosStatus.Base.TradeNo },
|
|
ItemConst.COMM_MSG_TYPE.EMG_NOTE_SEND,
|
|
htData);
|
|
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
EmgNoteFlgUpdate(sStartDT, sMsgCode, sMsgDiv, sSendFlag);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 전송 완료 업데이트
|
|
/// </summary>
|
|
/// <param name="sMsgCode"></param>
|
|
/// <param name="sMsgDiv"></param>
|
|
/// <param name="sSendFlag"></param>
|
|
/// <returns></returns>
|
|
private int EmgNoteFlgUpdate(string sStartDT, string sMsgCode, string sMsgDiv, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
if (sStartDT.Trim() == "" || sMsgCode.Trim() == "" || sMsgDiv.Trim() == "") return iRet;
|
|
|
|
sQuery += " UPDATE POSMST..MST_EMG_NOTE ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
|
|
//성공한것만 업데이트 시간 변경!
|
|
if (sSendFlag == "1")
|
|
sQuery += " , UPD_DT = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
|
|
sQuery += " WHERE 1 = 1 ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
|
|
sQuery += " AND START_DT = '" + sStartDT + "'";
|
|
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "'";
|
|
sQuery += " AND MSG_CODE = '" + sMsgCode + "' ";
|
|
sQuery += " AND MSG_DIV = '" + sMsgDiv + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
/// <summary>
|
|
/// 긴급메세지 전송 조회
|
|
/// </summary>
|
|
/// <param name="dtReturn"></param>
|
|
/// <returns></returns>
|
|
public Hashtable GetEmgNoteData(ref DataTable dtReturn)
|
|
{
|
|
Hashtable htReturn = null;
|
|
string sQuery = string.Empty;
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
sQuery += " SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, STOR_CD, POS_NO, MSG_CODE, MSG_DIV, START_DT, UPD_DT, READ_YN ";
|
|
sQuery += " FROM POSMST..MST_EMG_NOTE ";
|
|
sQuery += " WHERE 1 = 1 ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
|
|
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "'";
|
|
sQuery += " AND START_DT BETWEEN CONVERT(VARCHAR,GETDATE()-7,112) AND CONVERT(VARCHAR,GETDATE(),112) "; //-7일 전부터
|
|
sQuery += " AND SEND_YN IN ('0','9') ";
|
|
sQuery += " ORDER BY READ_YN, UPD_DT ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
htReturn = MakeEmgNoteJsonData(drTempReturn);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 htReturn;
|
|
}
|
|
/// <summary>
|
|
/// 긴급메세지 전송 헤시테이블 담기
|
|
/// </summary>
|
|
/// <param name="drData"></param>
|
|
/// <returns></returns>
|
|
private Hashtable MakeEmgNoteJsonData(DataRow drData)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
// 01 - 회사코드
|
|
htData.Add(Column.IQ_EMG_NOTE_SEND.DATA.CMP_CD, CmUtil.GetDataRowStr(drData, Column.IQ_EMG_NOTE_SEND.DATA.CMP_CD)); //"CMP_CD"));
|
|
// 02 - 점포코드
|
|
htData.Add(Column.IQ_EMG_NOTE_SEND.DATA.STOR_CD, CmUtil.GetDataRowStr(drData, Column.IQ_EMG_NOTE_SEND.DATA.STOR_CD)); //"STOR_CD"));
|
|
// 03 - 포스번호
|
|
htData.Add(Column.IQ_EMG_NOTE_SEND.DATA.POS_NO, CmUtil.GetDataRowStr(drData, Column.IQ_EMG_NOTE_SEND.DATA.POS_NO)); //"POS_NO"));
|
|
// 04 - 메세지코드
|
|
htData.Add(Column.IQ_EMG_NOTE_SEND.DATA.MSG_CODE, CmUtil.GetDataRowStr(drData, Column.IQ_EMG_NOTE_SEND.DATA.MSG_CODE)); //"MSG_CODE"));
|
|
// 05 - 메시지 구분별 유형
|
|
htData.Add(Column.IQ_EMG_NOTE_SEND.DATA.MSG_DIV, CmUtil.GetDataRowStr(drData, Column.IQ_EMG_NOTE_SEND.DATA.MSG_DIV)); // "MSG_DIV"));
|
|
// 06 - 시작 시간
|
|
htData.Add(Column.IQ_EMG_NOTE_SEND.DATA.START_DT, CmUtil.GetDataRowStr(drData, Column.IQ_EMG_NOTE_SEND.DATA.START_DT));
|
|
// 07 - 업데이트 시간
|
|
htData.Add(Column.IQ_EMG_NOTE_SEND.DATA.UPD_DT, CmUtil.GetDataRowStr(drData, Column.IQ_EMG_NOTE_SEND.DATA.UPD_DT)); // "UPD_DT"));
|
|
// 08 - 읽음 시간 - 2017-01-24 추가
|
|
htData.Add(Column.IQ_EMG_NOTE_SEND.DATA.READ_YN, CmUtil.GetDataRowStr(drData, Column.IQ_EMG_NOTE_SEND.DATA.READ_YN)); // "READ_YN"));
|
|
|
|
}
|
|
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 htData;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 11 - 점포점검 내역 전송 (ITR 전송)
|
|
public void StoreCheckSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
|
|
string sSendFlag = "";
|
|
string sCmpCd = "";
|
|
string sStorCd = "";
|
|
string sSaleDt = "";
|
|
string sInspctEntryGrpCd = "";
|
|
|
|
Hashtable htSendData = new Hashtable();
|
|
Hashtable htRecvData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
// 전송할 점포점검 데이터 생성
|
|
string sStoreCheckLog = GetStoreCheckLog(ref dtReturn);
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
DataRow dr = dtReturn.Rows[0];
|
|
sCmpCd = CmUtil.GetDataRowStr(dr, Column.ETC_STOR_INSPCT_ANSWR_STOR.NAME.CMP_CD);
|
|
sStorCd = CmUtil.GetDataRowStr(dr, Column.ETC_STOR_INSPCT_ANSWR_STOR.NAME.STOR_CD);
|
|
sSaleDt = CmUtil.GetDataRowStr(dr, Column.ETC_STOR_INSPCT_ANSWR_STOR.NAME.START_DT);
|
|
sInspctEntryGrpCd = CmUtil.GetDataRowStr(dr, Column.ETC_STOR_INSPCT_ANSWR_STOR.NAME.INSPCT_ENTRY_GRP_CD);
|
|
|
|
htSendData = MakeStoreCheckLogJsonData(dr, sStoreCheckLog);
|
|
|
|
string sReturn = ExecutePosIrt(ItemConst.COMM_MSG_TYPE.POSIRT, m_cPosStatus.Base.CommSvrIp, (int)m_cPosStatus.Base.PayInqPort, 10000, htSendData, ref htRecvData, false);
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
StoreCheckFlgUpdate(sCmpCd, sStorCd, sSaleDt, sInspctEntryGrpCd, sSendFlag);
|
|
}
|
|
}
|
|
|
|
private Hashtable MakeStoreCheckLogJsonData(DataRow drData, string sStoreCheckLog)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
// 01 - INQ 종별
|
|
htData.Add(Column.IQ_STOR_CHECK_LIST_INQ.DATA.INQ_TYPE, ItemConst.IRT_INQ_TYPE.STORE_CHECK_SAVE);
|
|
// 02 - 점포 코드
|
|
htData.Add(Column.IQ_STOR_CHECK_LIST_INQ.DATA.STOR_CD, CmUtil.GetDataRowStr(drData, Column.ETC_STOR_INSPCT_ANSWR_STOR.NAME.STOR_CD));
|
|
// 03 - 요청구분
|
|
htData.Add(Column.IQ_STOR_CHECK_LIST_INQ.DATA.INQ_DIV, "1");
|
|
// 04 - 점포점검 데이터
|
|
htData.Add(Column.IQ_STOR_CHECK_LIST_INQ.DATA.SAVE_DATA, sStoreCheckLog);
|
|
// 05 - 응답 코드
|
|
htData.Add(Column.IQ_STOR_CHECK_LIST_INQ.DATA.RES_CD, "");
|
|
}
|
|
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 htData;
|
|
}
|
|
|
|
private int StoreCheckFlgUpdate(string sCmpCd, string sStorCd, string sSaleDt, string sInspctEntryGrpCd, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = "";
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "") return iRet;
|
|
if (sSaleDt.Trim() == "") return iRet;
|
|
if (sStorCd.Trim() == "") return iRet;
|
|
|
|
sQuery = " UPDATE POSLOG..ETC_STOR_INSPCT_ANSWR_STOR ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND START_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
sQuery += " AND INSPCT_ENTRY_GRP_CD = '" + sInspctEntryGrpCd + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
public string GetStoreCheckLog(ref DataTable dtReturn)
|
|
{
|
|
string sQuery = "";
|
|
string sCMP_CD = "";
|
|
string sSTOR_CD = "";
|
|
string sSTART_DT = "";
|
|
string sINSPCT_ENTRY_GRP_CD = "";
|
|
|
|
string sStoreCheckData = "";
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
sQuery = " SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, INSPCT_ENTRY_GRP_CD, STOR_CD, START_DT ";
|
|
sQuery += " FROM POSLOG..ETC_STOR_INSPCT_ANSWR_STOR ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN, START_DT ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
sCMP_CD = drTempReturn[Column.ETC_STOR_INSPCT_ANSWR_STOR.NAME.CMP_CD].ToString();
|
|
sSTOR_CD = drTempReturn[Column.ETC_STOR_INSPCT_ANSWR_STOR.NAME.STOR_CD].ToString();
|
|
sSTART_DT = drTempReturn[Column.ETC_STOR_INSPCT_ANSWR_STOR.NAME.START_DT].ToString();
|
|
sINSPCT_ENTRY_GRP_CD = drTempReturn[Column.ETC_STOR_INSPCT_ANSWR_STOR.NAME.INSPCT_ENTRY_GRP_CD].ToString();
|
|
|
|
|
|
sStoreCheckData = GetStoreCheckHeader(sCMP_CD, sSTOR_CD, sSTART_DT, sINSPCT_ENTRY_GRP_CD)
|
|
+ GetStoreCheckDetail(sCMP_CD, sSTOR_CD, sSTART_DT, sINSPCT_ENTRY_GRP_CD);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 sStoreCheckData;
|
|
}
|
|
|
|
private string GetStoreCheckHeader(string sCMP_CD, string sSTOR_CD, string sSTART_DT, string sINSPCT_ENTRY_GRP_CD)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '" + ItemConst.IRT_TRAN_TYPE.TranHeader + "' + '|' + ISNULL(CMP_CD, '') + '|' + ISNULL(INSPCT_ENTRY_GRP_CD, '') + '|' + ISNULL(STOR_CD, '') + '|' + ISNULL(START_DT, '') + '|' + ISNULL(ANSWR_YN, '') + '|' + ";
|
|
sQuery += " ISNULL(ETC_CTNTS_1, '') + '|' + ISNULL(ETC_CTNTS_2, '') + '|' + ISNULL(ETC_CTNTS_3, '') + '|' + ISNULL(REG_USER_ID, '') + '|' + ISNULL(REG_DATE, '') + '|' + ";
|
|
sQuery += " ISNULL(UPD_USER_ID, '') + '|' + ISNULL(UPD_DATE, '') AS STORE_CHECK_HEADER ";
|
|
sQuery += " FROM POSLOG..ETC_STOR_INSPCT_ANSWR_STOR ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND START_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND INSPCT_ENTRY_GRP_CD = '{3}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSTART_DT
|
|
, sSTOR_CD
|
|
, sINSPCT_ENTRY_GRP_CD);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetStoreCheckDetail(string sCMP_CD, string sSTOR_CD, string sSTART_DT, string sINSPCT_ENTRY_GRP_CD)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranDetail + "' + '|' + ISNULL(CMP_CD, '') + '|' + ISNULL(BRAND_CD, '') + '|' + ISNULL(INSPCT_ENTRY_GRP_CD, '') + '|' + ISNULL(STOR_CD, '') + '|' + ISNULL(START_DT, '') + '|' + ";
|
|
sQuery += " ISNULL(INSPCT_ENTRY_L_CLSS_CD, '') + '|' + CONVERT(VARCHAR, ISNULL(INSPCT_ENTRY, 0)) + '|' + ISNULL(SEL_ENTRY_1_YN, '') + '|' + ISNULL(SEL_ENTRY_2_YN, '') + '|' + ISNULL(SEL_ENTRY_3_YN, '') + '|' + ISNULL(SEL_ENTRY_4_YN, '') + '|' + ISNULL(SEL_ENTRY_5_YN, '') + '|' +";
|
|
sQuery += " CONVERT(VARCHAR, ISNULL(SCORE_1, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SCORE_2, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SCORE_3, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SCORE_4, 0)) + '|' + CONVERT(VARCHAR, ISNULL(SCORE_5, 0)) + '|' + ";
|
|
sQuery += " ISNULL(SEL_ENTRY_1_CTNTS, '') + '|' + ISNULL(SEL_ENTRY_2_CTNTS, '') + '|' + ISNULL(SEL_ENTRY_3_CTNTS, '') + '|' + ISNULL(SEL_ENTRY_4_CTNTS, '') + '|' + ISNULL(SEL_ENTRY_5_CTNTS, 0) + '|' + ";
|
|
sQuery += " ISNULL(NOTE, '') + '|' + ISNULL(REG_USER_ID, 0) + '|' + ISNULL(REG_DATE, '') + '|' + ISNULL(UPD_USER_ID, '') + '|' + ISNULL(UPD_DATE, '') AS STORE_CHECK_DETAIL ";
|
|
sQuery += " FROM POSLOG..ETC_STOR_INSPCT_ANSWR ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND START_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
sQuery += " AND INSPCT_ENTRY_GRP_CD = '{3}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSTART_DT
|
|
, sSTOR_CD
|
|
, sINSPCT_ENTRY_GRP_CD);
|
|
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 12 - 점포장비점검 내역 전송 (ITR 전송)
|
|
public void StoreEquipCheckSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
|
|
string sSendFlag = "";
|
|
string sCmpCd = "";
|
|
string sStorCd = "";
|
|
string sSaleDt = "";
|
|
|
|
Hashtable htSendData = new Hashtable();
|
|
Hashtable htRecvData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
// 전송할 점포점검 데이터 생성
|
|
string sStoreCheckLog = GetStoreEquipCheckLog(ref dtReturn);
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
DataRow dr = dtReturn.Rows[0];
|
|
sCmpCd = CmUtil.GetDataRowStr(dr, Column.ETC_STOR_EQU_CHECK_LIST.NAME.CMP_CD);
|
|
sStorCd = CmUtil.GetDataRowStr(dr, Column.ETC_STOR_EQU_CHECK_LIST.NAME.STOR_CD);
|
|
sSaleDt = CmUtil.GetDataRowStr(dr, Column.ETC_STOR_EQU_CHECK_LIST.NAME.SALE_DT);
|
|
|
|
htSendData = MakeStoreEquipCheckLogJsonData(dr, sStoreCheckLog);
|
|
|
|
string sReturn = ExecutePosIrt(ItemConst.COMM_MSG_TYPE.POSIRT, m_cPosStatus.Base.CommSvrIp, (int)m_cPosStatus.Base.PayInqPort, 10000, htSendData, ref htRecvData, false);
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
StoreEquipCheckFlgUpdate(sCmpCd, sStorCd, sSaleDt, sSendFlag);
|
|
}
|
|
}
|
|
|
|
private Hashtable MakeStoreEquipCheckLogJsonData(DataRow drData, string sStoreCheckLog)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
// 01 - INQ 종별
|
|
htData.Add(Column.IQ_STOR_CHECK_LIST_INQ.DATA.INQ_TYPE, ItemConst.IRT_INQ_TYPE.STR_EQUIP_CHECK_SAVE);
|
|
// 02 - 점포 코드
|
|
htData.Add(Column.IQ_STOR_CHECK_LIST_INQ.DATA.STOR_CD, CmUtil.GetDataRowStr(drData, Column.ETC_STOR_EQU_CHECK_LIST.NAME.STOR_CD));
|
|
// 03 - 요청구분
|
|
htData.Add(Column.IQ_STOR_CHECK_LIST_INQ.DATA.INQ_DIV, "1");
|
|
// 04 - 점포점검 데이터
|
|
htData.Add(Column.IQ_STOR_CHECK_LIST_INQ.DATA.SAVE_DATA, sStoreCheckLog);
|
|
// 05 - 응답 코드
|
|
htData.Add(Column.IQ_STOR_CHECK_LIST_INQ.DATA.RES_CD, "");
|
|
}
|
|
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 htData;
|
|
}
|
|
|
|
private int StoreEquipCheckFlgUpdate(string sCmpCd, string sStorCd, string sSaleDt, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = "";
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "") return iRet;
|
|
if (sSaleDt.Trim() == "") return iRet;
|
|
if (sStorCd.Trim() == "") return iRet;
|
|
|
|
sQuery = " UPDATE POSLOG..ETC_STOR_EQU_CHECK_LIST ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
public string GetStoreEquipCheckLog(ref DataTable dtReturn)
|
|
{
|
|
string sQuery = "";
|
|
string sCMP_CD = "";
|
|
string sSTOR_CD = "";
|
|
string sSTART_DT = "";
|
|
|
|
string sStoreCheckData = "";
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
sQuery = " SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, STOR_CD, SALE_DT ";
|
|
sQuery += " FROM POSLOG..ETC_STOR_EQU_CHECK_LIST ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN, SALE_DT ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
sCMP_CD = drTempReturn[Column.ETC_STOR_EQU_CHECK_LIST.NAME.CMP_CD].ToString();
|
|
sSTOR_CD = drTempReturn[Column.ETC_STOR_EQU_CHECK_LIST.NAME.STOR_CD].ToString();
|
|
sSTART_DT = drTempReturn[Column.ETC_STOR_EQU_CHECK_LIST.NAME.SALE_DT].ToString();
|
|
|
|
sStoreCheckData = GetStoreEquipCheckHeader(sCMP_CD, sSTOR_CD, sSTART_DT)
|
|
+ GetStoreEquipCheckDetail(sCMP_CD, sSTOR_CD, sSTART_DT);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 sStoreCheckData;
|
|
}
|
|
|
|
private string GetStoreEquipCheckHeader(string sCMP_CD, string sSTOR_CD, string sSALE_DT)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '" + ItemConst.IRT_TRAN_TYPE.TranHeader + "' + '|' + ISNULL(CMP_CD, '') + '|' + ISNULL(STOR_CD, '') + '|' + ISNULL(SALE_DT, '') + '|' + ISNULL(CHECK_STATE, '') + '|' + ";
|
|
sQuery += " ISNULL(REG_USER_ID, '') + '|' + ISNULL(REG_DATE, '') + '|' + ISNULL(UPD_USER_ID, '') + '|' + ISNULL(UPD_DATE, '') AS STORE_EQUIP_CHECK_HEADER ";
|
|
sQuery += " FROM POSLOG..ETC_STOR_EQU_CHECK_LIST ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD);
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
private string GetStoreEquipCheckDetail(string sCMP_CD, string sSTOR_CD, string sSALE_DT)
|
|
{
|
|
StringBuilder sbTranData = new StringBuilder();
|
|
string sQuery = "";
|
|
string sSQL = "";
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery += " SELECT '#~' + '" + ItemConst.IRT_TRAN_TYPE.TranDetail + "' + '|' + ISNULL(CMP_CD, '') + '|' + ISNULL(STOR_CD, '') + '|' + ISNULL(SALE_DT, '') + '|' + ";
|
|
sQuery += " ISNULL(CHECK_DIV_CD, '') + '|' + ISNULL(CHECK_EQU_CD, '') + '|' + ISNULL(CHECK_RESULT, '') + '|' + ISNULL(AS_RESULT, '') + '|' + ISNULL(STOR_RESULT, '') + '|' + ";
|
|
sQuery += " ISNULL(REG_USER_ID, 0) + '|' + ISNULL(REG_DATE, '') + '|' + ISNULL(UPD_USER_ID, '') + '|' + ISNULL(UPD_DATE, '') AS STORE_EQUIP_CHECK_DETAIL ";
|
|
sQuery += " FROM POSLOG..ETC_STOR_EQU_CHECK_DETAIL ";
|
|
sQuery += " WHERE CMP_CD = '{0}' ";
|
|
sQuery += " AND SALE_DT = '{1}' ";
|
|
sQuery += " AND STOR_CD = '{2}' ";
|
|
|
|
sSQL = string.Format(sQuery
|
|
, sCMP_CD
|
|
, sSALE_DT
|
|
, sSTOR_CD);
|
|
|
|
|
|
if (sqlDb.DBDataTableSelect(sSQL, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn != null && dtTempReturn.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow dr in dtTempReturn.Rows)
|
|
{
|
|
sbTranData.Append(dr[0].ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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 sbTranData.ToString();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 13 - SCALE Log 전송
|
|
public void ScaleLogSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
Hashtable htData = null;
|
|
string sSendFlag = string.Empty;
|
|
string sCmpCd = string.Empty;
|
|
string sBrandCd = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sScaleDt = string.Empty;
|
|
string sScaleTm = string.Empty;
|
|
|
|
try
|
|
{
|
|
// 전송할 Scale Log 데이터 생성
|
|
htData = GetScaleLogData(ref dtReturn);
|
|
|
|
if(dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sCmpCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "CMP_CD");
|
|
sBrandCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "BRAND_CD");
|
|
sStorCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "STOR_CD");
|
|
sSaleDt = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SALE_DT");
|
|
sPosNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "POS_NO");
|
|
sScaleDt = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SCALE_DT");
|
|
sScaleTm = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SCALE_TM");
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.ScaleLogPort),
|
|
5000,
|
|
new string[] { sCmpCd, sBrandCd, sStorCd, sSaleDt, sPosNo, "" },
|
|
ItemConst.COMM_MSG_TYPE.SCALE_LOG,
|
|
htData);
|
|
|
|
if(sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
ScaleLogFlgUpdate(sCmpCd, sBrandCd, sSaleDt, sStorCd, sPosNo, sScaleDt, sScaleTm, sSendFlag);
|
|
}
|
|
}
|
|
|
|
public Hashtable GetScaleLogData(ref DataTable dtReturn)
|
|
{
|
|
Hashtable htReturn = null;
|
|
string sQuery = string.Empty;
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
sQuery += "SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, BRAND_CD, SALE_DT, STOR_CD, POS_NO ";
|
|
sQuery += " , SCALE_DT, SCALE_TM, WEIGHT, ITEM_NM, NORMAL_YN ";
|
|
sQuery += " FROM POSLOG..ETC_SCALE_LOG ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN, SALE_DT ";
|
|
|
|
if(sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if(dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
htReturn = MakeScaleLogJsonData(drTempReturn);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 htReturn;
|
|
}
|
|
|
|
private Hashtable MakeScaleLogJsonData(DataRow drData)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
// 01 - 회사코드
|
|
htData.Add(Column.IQ_SCALE_LOG_REQ.DATA.CmpCd, CmUtil.GetDataRowStr(drData, "CMP_CD"));
|
|
// 02 - 점포코드
|
|
htData.Add(Column.IQ_SCALE_LOG_REQ.DATA.StorCd, CmUtil.GetDataRowStr(drData, "STOR_CD"));
|
|
// 03 - 판매일자
|
|
htData.Add(Column.IQ_SCALE_LOG_REQ.DATA.SaleDt, CmUtil.GetDataRowStr(drData, "SALE_DT"));
|
|
// 04 - 포스번호
|
|
htData.Add(Column.IQ_SCALE_LOG_REQ.DATA.PosNo, CmUtil.GetDataRowStr(drData, "POS_NO"));
|
|
// 05 - 측정일자
|
|
htData.Add(Column.IQ_SCALE_LOG_REQ.DATA.ScaleDt, CmUtil.GetDataRowStr(drData, "SCALE_DT"));
|
|
// 06 - 측정시간
|
|
htData.Add(Column.IQ_SCALE_LOG_REQ.DATA.ScaleTm, CmUtil.GetDataRowStr(drData, "SCALE_TM"));
|
|
// 07 - 중량
|
|
htData.Add(Column.IQ_SCALE_LOG_REQ.DATA.Weight, CmUtil.GetDataRowStr(drData, "WEIGHT"));
|
|
// 08 - 상품명
|
|
htData.Add(Column.IQ_SCALE_LOG_REQ.DATA.ItemNm, CmUtil.GetDataRowStr(drData, "ITEM_NM"));
|
|
// 09 - 정상/미달 구분
|
|
htData.Add(Column.IQ_SCALE_LOG_REQ.DATA.NormalYn, CmUtil.GetDataRowStr(drData, "NORMAL_YN"));
|
|
}
|
|
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 htData;
|
|
}
|
|
|
|
private int ScaleLogFlgUpdate(string sCmpCd, string sBrandCd, string sSaleDt, string sStorCd, string sPosNo, string sScaleDt, string sScaleTm, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "") return iRet;
|
|
if (sBrandCd.Trim() == "") return iRet;
|
|
if (sSaleDt.Trim() == "") return iRet;
|
|
if (sStorCd.Trim() == "") return iRet;
|
|
if (sPosNo.Trim() == "") return iRet;
|
|
if (sScaleDt.Trim() == "") return iRet;
|
|
if (sScaleTm.Trim() == "") return iRet;
|
|
|
|
sQuery += "UPDATE POSLOG..ETC_SCALE_LOG ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND BRAND_CD = '" + sBrandCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
sQuery += " AND POS_NO = '" + sPosNo + "' ";
|
|
sQuery += " AND SCALE_DT = '" + sScaleDt + "' ";
|
|
sQuery += " AND SCALE_TM = '" + sScaleTm + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
#endregion 13 - SCALE Log 전송
|
|
|
|
#region 14 - 보류 로그 전송
|
|
/// <summary>
|
|
/// 보류로그 전송 메인
|
|
/// </summary>
|
|
public void HoldLogSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
Hashtable htData = null;
|
|
string sSendFlag = string.Empty;
|
|
string sCmpCd = string.Empty;
|
|
string sBrandCd = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sRegNo = string.Empty;
|
|
string sSeq = string.Empty;
|
|
|
|
|
|
try
|
|
{
|
|
// 전송할 Scale Log 데이터 생성
|
|
htData = GetHoldLogData(ref dtReturn);
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sCmpCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "CMP_CD");
|
|
sBrandCd = m_cPosStatus.Base.BrandCd;
|
|
sStorCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "STOR_CD");
|
|
sSaleDt = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SALE_DT");
|
|
sPosNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "POS_NO");
|
|
sRegNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "REG_NO");
|
|
sSeq = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SEQ");
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.ScaleLogPort),
|
|
5000,
|
|
new string[] { sCmpCd, sBrandCd, sStorCd, sSaleDt, sPosNo, "" },
|
|
ItemConst.COMM_MSG_TYPE.HOLD_LOG,
|
|
htData);
|
|
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
HoldLogFlgUpdate(sCmpCd, sSaleDt, sStorCd, sPosNo, sRegNo, sSeq, sSendFlag);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 데이터 조회
|
|
/// </summary>
|
|
/// <param name="dtReturn"></param>
|
|
/// <returns></returns>
|
|
public Hashtable GetHoldLogData(ref DataTable dtReturn)
|
|
{
|
|
Hashtable htReturn = null;
|
|
string sQuery = string.Empty;
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
/////////////////////////////////////////////////////////////////
|
|
/// 중요! 테이블 컬럼명 갯수와 명칭은 동일 해야함!
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
sQuery += "SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, SALE_DT, STOR_CD, POS_NO, REG_NO, SEQ, HOLD_STAT, SYS_DT, SYS_TM, REG_SEQ ";
|
|
sQuery += " ,ORG_REG_SEQ, PIC_NO, ITEM_QTY, SALE_AMT, AMT_FILLER_01, AMT_FILLER_02, STR_FILLER_01, STR_FILLER_02 ";
|
|
sQuery += " FROM POSLOG.dbo.ETC_HOLD_HISTORY ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN ASC ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
htReturn = MakeHoldLogJsonData(drTempReturn);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 htReturn;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 전문 생성
|
|
/// </summary>
|
|
/// <param name="drData"></param>
|
|
/// <returns></returns>
|
|
private Hashtable MakeHoldLogJsonData(DataRow drData)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
/////////////////////////////////////////////////////////////////
|
|
/// 중요! 테이블 컬럼명 갯수와 명칭은 동일 해야함!
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
// 전문 생성
|
|
for (int iRow = 0; iRow < drData.Table.Columns.Count; iRow++)
|
|
{
|
|
htData.Add(drData.Table.Columns[iRow].ColumnName, drData[iRow].ToString());
|
|
}
|
|
|
|
}
|
|
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 htData;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 디비 업데이트
|
|
/// </summary>
|
|
/// <param name="sCmpCd"></param>
|
|
/// <param name="sSaleDt"></param>
|
|
/// <param name="sStorCd"></param>
|
|
/// <param name="sPosNo"></param>
|
|
/// <param name="sSeq"></param>
|
|
/// <param name="sSendFlag"></param>
|
|
/// <returns></returns>
|
|
private int HoldLogFlgUpdate(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sRegNo, string sSeq, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "" || sSaleDt.Trim() == "" || sStorCd.Trim() == "" || sPosNo.Trim() == "" || sRegNo.Trim() == "" || sSeq.Trim() == "") return iRet;
|
|
|
|
sQuery += "UPDATE POSLOG.dbo.ETC_HOLD_HISTORY ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
sQuery += " AND POS_NO = '" + sPosNo + "' ";
|
|
sQuery += " AND REG_NO = '" + sRegNo + "' ";
|
|
sQuery += " AND SEQ = '" + sSeq + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
#endregion 14 - 보류 로그 전송
|
|
|
|
#region 15 - 해피앱 추후적립 내역 전송(TR_HPAPP_AFTER_SAVE 전송)
|
|
//#해피앱 추후적립 start, sskim
|
|
/// <summary>
|
|
/// 보류로그 전송 메인
|
|
/// </summary>
|
|
public void HpAppAfterSaveSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
Hashtable htData = null;
|
|
string sSendFlag = string.Empty;
|
|
string sCmpCd = string.Empty;
|
|
string sBrandCd = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sTradeNo = string.Empty;
|
|
|
|
|
|
try
|
|
{
|
|
// 전송할 TR_HpAppAfterSave 데이터 생성
|
|
htData = GetHpAppAfterSaveData(ref dtReturn);
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sCmpCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "CMP_CD");
|
|
sBrandCd = m_cPosStatus.Base.BrandCd;
|
|
sStorCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "STOR_CD");
|
|
sSaleDt = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SALE_DT");
|
|
sPosNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "POS_NO");
|
|
sTradeNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "TRADE_NO");
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlPort),
|
|
5000,
|
|
new string[] { sCmpCd, sBrandCd, sStorCd, sSaleDt, sPosNo, sTradeNo },
|
|
ItemConst.COMM_MSG_TYPE.HPAPP_AFTER_SAVE,
|
|
htData);
|
|
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
HpAppAfterSaveUpdate(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo, sSendFlag);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 데이터 조회
|
|
/// </summary>
|
|
/// <param name="dtReturn"></param>
|
|
/// <returns></returns>
|
|
public Hashtable GetHpAppAfterSaveData(ref DataTable dtReturn)
|
|
{
|
|
Hashtable htReturn = null;
|
|
string sQuery = string.Empty;
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
/////////////////////////////////////////////////////////////////
|
|
/// 중요! 테이블 컬럼명 갯수와 명칭은 동일 해야함!
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
sQuery += "SELECT TOP 1 ";
|
|
sQuery += " CMP_CD, SALE_DT, STOR_CD, POS_NO, TRADE_NO ";
|
|
sQuery += " ,BILL_BAR_CD, TMNLNO, TOT_TRADE_AMT, ACCUM_TRGT_AMT, APPR_WAY_CD ";
|
|
sQuery += " ,APPR_CARD_NO, ADD_ACCUM_YN, ADD_ACCUM_CD, ADD_ACCUM_HQ_ALLOT_AMT, ADD_ACCUM_STOR_ALLOT_AMT ";
|
|
sQuery += " ,SAVE_STATUS ";
|
|
sQuery += " FROM POSLOG.dbo.TR_HPAPP_AFTER_SAVE ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN ASC ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
htReturn = MakeHpAppAfterSaveJsonData(drTempReturn);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 htReturn;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 전문 생성
|
|
/// </summary>
|
|
/// <param name="drData"></param>
|
|
/// <returns></returns>
|
|
private Hashtable MakeHpAppAfterSaveJsonData(DataRow drData)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
/////////////////////////////////////////////////////////////////
|
|
/// 중요! 테이블 컬럼명 갯수와 명칭은 동일 해야함!
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
// 전문 생성
|
|
for (int iRow = 0; iRow < drData.Table.Columns.Count; iRow++)
|
|
{
|
|
htData.Add(drData.Table.Columns[iRow].ColumnName, drData[iRow].ToString());
|
|
}
|
|
|
|
}
|
|
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 htData;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 디비 업데이트
|
|
/// </summary>
|
|
/// <param name="sCmpCd"></param>
|
|
/// <param name="sSaleDt"></param>
|
|
/// <param name="sStorCd"></param>
|
|
/// <param name="sPosNo"></param>
|
|
/// <param name="sTradeNo"></param>
|
|
/// <returns></returns>
|
|
private int HpAppAfterSaveUpdate(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "" || sSaleDt.Trim() == "" || sStorCd.Trim() == "" || sPosNo.Trim() == "" || sTradeNo.Trim() == "") return iRet;
|
|
|
|
sQuery += "UPDATE POSLOG.dbo.TR_HPAPP_AFTER_SAVE ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
sQuery += " AND POS_NO = '" + sPosNo + "' ";
|
|
sQuery += " AND TRADE_NO = '" + sTradeNo + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
//#해피앱 추후적립 end, sskim
|
|
#endregion 15 - 해피앱 추후적립 내역 전송(TR_HPAPP_AFTER_SAVE 전송)
|
|
|
|
//#20171120 유통기한 바코드 인식률 start, phj
|
|
#region 16 - 유통기한 바코드 인식률 (TR_BAR_SUCESS_RATE 전송)
|
|
|
|
public void BarcodeSucessRateSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
Hashtable htData = null;
|
|
|
|
string sSendFlag = string.Empty;
|
|
string sCmpCd = string.Empty;
|
|
string sBrandCd = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sTradeNo = string.Empty;
|
|
string sSeq = string.Empty;
|
|
|
|
try
|
|
{
|
|
// 전송할 TR_BAR_SUCESS_RATE 데이터 생성
|
|
htData = GetBarcodeSucessRateData(ref dtReturn);
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sCmpCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "CMP_CD");
|
|
sBrandCd = m_cPosStatus.Base.BrandCd;
|
|
sStorCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "STOR_CD");
|
|
sSaleDt = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SALE_DT");
|
|
sPosNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "POS_NO");
|
|
sTradeNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "REG_NO");
|
|
sSeq = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SEQ");
|
|
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlPort),
|
|
5000,
|
|
new string[] { sCmpCd, sBrandCd, sStorCd, sSaleDt, sPosNo, sTradeNo },
|
|
ItemConst.COMM_MSG_TYPE.BAR_SUCESS_RATE,
|
|
htData);
|
|
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
BarcodeSucessRateUpdate(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo, sSendFlag, sSeq);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 데이터 조회
|
|
/// </summary>
|
|
/// <param name="dtReturn"></param>
|
|
/// <returns></returns>
|
|
public Hashtable GetBarcodeSucessRateData(ref DataTable dtReturn)
|
|
{
|
|
Hashtable htReturn = null;
|
|
string sQuery = string.Empty;
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
/////////////////////////////////////////////////////////////////
|
|
/// 중요! 테이블 컬럼명 갯수와 명칭은 동일 해야함!
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
sQuery += "SELECT TOP 1 ";
|
|
sQuery += " CMP_CD,SALE_DT,STOR_CD,POS_NO,REG_NO,SEQ,BAR_CD,SUCESS_YN,SEND_YN,UPD_DATE,REG_DATE ";
|
|
sQuery += " FROM POSLOG.dbo.TR_BAR_SUCESS_RATE ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN ASC ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
htReturn = MakeBarcodeSucessRateJsonData(drTempReturn);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 htReturn;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 전문 생성
|
|
/// </summary>
|
|
/// <param name="drData"></param>
|
|
/// <returns></returns>
|
|
private Hashtable MakeBarcodeSucessRateJsonData(DataRow drData)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
/////////////////////////////////////////////////////////////////
|
|
/// 중요! 테이블 컬럼명 갯수와 명칭은 동일 해야함!
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
// 전문 생성
|
|
for (int iRow = 0; iRow < drData.Table.Columns.Count; iRow++)
|
|
{
|
|
htData.Add(drData.Table.Columns[iRow].ColumnName, drData[iRow].ToString());
|
|
}
|
|
|
|
}
|
|
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 htData;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 디비 업데이트
|
|
/// </summary>
|
|
/// <param name="sCmpCd"></param>
|
|
/// <param name="sSaleDt"></param>
|
|
/// <param name="sStorCd"></param>
|
|
/// <param name="sPosNo"></param>
|
|
/// <param name="sTradeNo"></param>
|
|
/// <returns></returns>
|
|
private int BarcodeSucessRateUpdate(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo, string sSendFlag, string sSeq)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "" || sSaleDt.Trim() == "" || sStorCd.Trim() == "" || sPosNo.Trim() == "" || sTradeNo.Trim() == "") return iRet;
|
|
|
|
sQuery += "UPDATE POSLOG.dbo.TR_BAR_SUCESS_RATE ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
sQuery += " AND POS_NO = '" + sPosNo + "' ";
|
|
sQuery += " AND REG_NO = '" + sTradeNo + "' ";
|
|
sQuery += " AND SEQ = '" + sSeq + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
#endregion 16 - 유통기한 바코드 인식률
|
|
//#20171120 유통기한 바코드 인식률 end, phj
|
|
|
|
|
|
//#20180322 휴게소pos매출연동 start,phj
|
|
#region 17 - 휴게소pos매출연동 대상거래 조회
|
|
private void GetRestAreaTranInfo(ref DataTable dtReturn)
|
|
{
|
|
string sQuery = string.Empty;
|
|
DataTable dtTempReturn = null;
|
|
|
|
try
|
|
{
|
|
sQuery = " SELECT TOP 1 \n"
|
|
|
|
|
|
//20180404 도로공사 재전송 기능을 제외한 기본 스레드 동작에서는 영업일자 기준으로 동작하지 않도록 수정 start, phj
|
|
//기본
|
|
//+ " CMP_CD, SALE_DT, STOR_CD, POS_NO, TRADE_NO \n"
|
|
//변경
|
|
+ " CMP_CD, SALE_DT, STOR_CD, POS_NO, TRADE_NO, OUT_SEND_YN \n"
|
|
//20180404 도로공사 재전송 기능을 제외한 기본 스레드 동작에서는 영업일자 기준으로 동작하지 않도록 수정 end, phj
|
|
|
|
+ " FROM POSLOG..TR_SALE_HEADER \n"
|
|
+ " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n"
|
|
+ " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' \n"
|
|
+ " AND TRADE_KINDPER IN ('00','20','21','42') \n"
|
|
+ " AND OUT_SEND_YN <> '8' \n"
|
|
+ " AND TRAIN_MODE_YN = '0' \n"
|
|
+ " ORDER BY SALE_DT desc, TRADE_NO desc, OUT_SEND_YN \n";
|
|
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn);
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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);
|
|
}
|
|
}
|
|
#endregion 17 - 휴게소pos매출연동
|
|
//#20180322 휴게소pos매출연동 end,phj
|
|
|
|
//#20180322 휴게소pos매출연동 start,phj
|
|
#region 17 - 휴게소pos매출연동
|
|
public void MakeTranToRestArea()
|
|
{
|
|
bool bRet = false;
|
|
string sendFlag = string.Empty;
|
|
// 빌정보
|
|
string sCmpCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sTradeNo = string.Empty;
|
|
|
|
//20180404 도로공사 재전송 기능을 제외한 기본 스레드 동작에서는 영업일자 기준으로 동작하지 않도록 수정 start, phj
|
|
string sOutSendYN = string.Empty;
|
|
//20180404 도로공사 재전송 기능을 제외한 기본 스레드 동작에서는 영업일자 기준으로 동작하지 않도록 수정 end, phj
|
|
|
|
// 텍스트 파일 생성
|
|
string sFilename = string.Empty;
|
|
string sFileFullname = string.Empty;
|
|
string sPath = string.Empty;
|
|
// JSON 생성
|
|
string sJsonData = string.Empty;
|
|
|
|
DataTable dtReturn = null;
|
|
try
|
|
{
|
|
// 전송할 데이터 조회
|
|
GetRestAreaTranInfo(ref dtReturn);
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
// 0:미전송, 8:파일생성, 9:에러
|
|
sendFlag = "0";
|
|
|
|
DataRow dr = dtReturn.Rows[0];
|
|
|
|
sCmpCd = CmUtil.GetDataRowStr(dr, "CMP_CD");
|
|
sSaleDt = CmUtil.GetDataRowStr(dr, "SALE_DT");
|
|
sStorCd = CmUtil.GetDataRowStr(dr, "STOR_CD");
|
|
sPosNo = CmUtil.GetDataRowStr(dr, "POS_NO");
|
|
sTradeNo = CmUtil.GetDataRowStr(dr, "TRADE_NO");
|
|
|
|
|
|
//20180404 도로공사 재전송 기능을 제외한 기본 스레드 동작에서는 영업일자 기준으로 동작하지 않도록 수정 start, phj
|
|
sOutSendYN = CmUtil.GetDataRowStr(dr, "OUT_SEND_YN");
|
|
|
|
|
|
if ((CmUtil.LongParse(sSaleDt) < CmUtil.LongParse(m_cPosStatus.Base.SaleDate)) && sOutSendYN != "R")
|
|
{
|
|
//20180403 영업일자보다 크거나 같거나 스레드 동작하도록 추가수정
|
|
return;
|
|
}
|
|
//20180404 도로공사 재전송 기능을 제외한 기본 스레드 동작에서는 영업일자 기준으로 동작하지 않도록 수정 end, phj
|
|
|
|
|
|
Hashtable htData = null;
|
|
htData = new Hashtable();
|
|
htData.Clear();
|
|
bRet = MakeTrSendData(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo, ref htData);
|
|
|
|
if (bRet == false)
|
|
{
|
|
sendFlag = "9";
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
// JSON 생성
|
|
m_cDataCommon.HashToJsonString(htData, ref sJsonData);
|
|
|
|
//S+영업일자(YYMMDD)+운영업체코드(3자리)+휴게소코드(7자리)+포스그룹코드(2자리)+POS번호(4자리)+영수증번호(8자리).dat
|
|
sFilename = string.Format("{0}{1}{2}{3}{4}{5}{6}.dat"
|
|
, ItemConst.ROAD_SAVE_TYPE.SALE
|
|
, sSaleDt.Substring(2, 6).Trim() //영업일자(YYMMDD)
|
|
, m_cPosStatus.RestAreaPos.RestAreaPosGroupCd.PadLeft(3, '0').Trim() //운영업체코드(3자리)
|
|
, m_cPosStatus.RestAreaPos.RestAreaPosCd.PadLeft(7, '0').Trim() //휴게소코드(7자리)
|
|
, m_cPosStatus.RestAreaPos.RestAreaPosPosGroupCd.PadLeft(2, '0').Trim() //포스그룹코드(2자리)
|
|
, m_cPosStatus.RestAreaPos.RestAreaPosPosNo.PadLeft(4, '0').Trim() //POS번호(4자리)
|
|
, sTradeNo.PadLeft(8, '0')); //영수증번호(8자리)
|
|
|
|
|
|
//#20180410 휴게소매출 경로 없을 경우 자동생성 안함 start,phj
|
|
if (m_cPosStatus.RestAreaPos.RestAreaPosDir == "")
|
|
{
|
|
m_cPosStatus.RestAreaPos.RestAreaPosDir = @"C:\eRest_SPC\Sals\";
|
|
}
|
|
//#20180410 휴게소매출 경로 없을 경우 자동생성 안함 end,phj
|
|
|
|
sPath = m_cPosStatus.RestAreaPos.RestAreaPosDir;
|
|
sFileFullname = sPath + sFilename;
|
|
|
|
//if (m_cDataCommon.SaveRoadJson(ItemConst.ROAD_SAVE_TYPE.SALE, dFilename, sJsonData).Equals(UserCom.RST_OK))
|
|
if (CmUtil.WriteTextFile(sFileFullname, sJsonData) == true)
|
|
{
|
|
//CmUtil.FileCopy(sFilename, dFilename, false);
|
|
sendFlag = "8";
|
|
}
|
|
else
|
|
{
|
|
sendFlag = "9";
|
|
|
|
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 (함수명))
|
|
"도로공사 Hi-쉼마루 파일 생성 오류 -> " + sFileFullname);
|
|
}
|
|
}
|
|
}
|
|
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 (함수명))
|
|
"도로공사 Hi-쉼마루 파일 생성 오류 -> " + sFileFullname + " : " + ex.Message);
|
|
sendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
OutsideTranSendFlgUpdate(sCmpCd, sStorCd, sPosNo, sSaleDt, sTradeNo, sendFlag);
|
|
}
|
|
}
|
|
#endregion 17 - 휴게소pos매출연동
|
|
//#20180322 휴게소pos매출연동 end,phj
|
|
|
|
//#20180322 휴게소pos매출연동 start,phj
|
|
#region 17 - 휴게소 포스에 보낼 데이터 조립
|
|
private bool MakeTrSendData(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo, ref Hashtable htSendData)
|
|
{
|
|
bool bRet = false;
|
|
|
|
Hashtable htData = null;
|
|
htData = new Hashtable();
|
|
htData.Clear();
|
|
|
|
try
|
|
{
|
|
Hashtable ht_Header = null;
|
|
ht_Header = new Hashtable();
|
|
ht_Header.Clear();
|
|
bRet = MakeSaleHDData(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo, ref ht_Header);
|
|
if (bRet == false)
|
|
{
|
|
return bRet;
|
|
}
|
|
|
|
|
|
ArrayList Al_Detail = null;
|
|
Al_Detail = new ArrayList();
|
|
Al_Detail.Clear();
|
|
bRet = MakeSaleDTData(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo, ref Al_Detail);
|
|
if (bRet == false)
|
|
{
|
|
return bRet;
|
|
}
|
|
|
|
ArrayList Al_Paylist = null;
|
|
Al_Paylist = new ArrayList();
|
|
Al_Paylist.Clear();
|
|
bRet = MakePaymentData(sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo, ref Al_Paylist);
|
|
if (bRet == false)
|
|
{
|
|
return bRet;
|
|
}
|
|
|
|
// JSON 생성
|
|
if (ht_Header.Count > 0) htData.Add(Column.RESTAREA_SALE_HD.ITEM, ht_Header);
|
|
if (Al_Detail.Count > 0) htData.Add(Column.RESTAREA_SALE_DT.ITEM, Al_Detail);
|
|
if (Al_Paylist.Count > 0) htData.Add(Column.RESTAREA_SALE_SP.ITEM, Al_Paylist);
|
|
|
|
htSendData = htData;
|
|
|
|
bRet = true;
|
|
}
|
|
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 (함수명))
|
|
"도로공사 Hi-쉼마루 SEND DATA -> " + ex.Message);
|
|
|
|
}
|
|
|
|
//return htData;
|
|
return bRet;
|
|
}
|
|
#endregion 17 - 휴게소 포스에 보낼 데이터 조립
|
|
//#20180322 휴게소pos매출연동 end,phj
|
|
|
|
//#20180322 휴게소pos매출연동 start,phj
|
|
#region 결제조회
|
|
private bool MakePaymentData(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo, ref ArrayList AlSaleSPData)
|
|
{
|
|
bool bRet = false;
|
|
string sQuery = string.Empty;
|
|
string sSelQuery = string.Empty;
|
|
|
|
DataTable dtReturn = new DataTable();
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
Column.RESTAREA_SALE_SP.RESTAREA_PAY_CASH.DATA Pay_Cash = null;
|
|
Column.RESTAREA_SALE_SP.RESTAREA_PAY_CARD.DATA Pay_Card = null;
|
|
|
|
Pay_Cash = new Column.RESTAREA_SALE_SP.RESTAREA_PAY_CASH.DATA();
|
|
Pay_Card = new Column.RESTAREA_SALE_SP.RESTAREA_PAY_CARD.DATA();
|
|
|
|
ArrayList al_Payment = null;
|
|
al_Payment = new ArrayList();
|
|
al_Payment.Clear();
|
|
|
|
try
|
|
{
|
|
#region 카드결제조회
|
|
|
|
sQuery = "";
|
|
sSelQuery = "";
|
|
|
|
|
|
//PCKR 02 00 신용카드
|
|
//PCKR 04 02 삼성포인트사용
|
|
//PCKR 04 06 신한포인트사용
|
|
//PCKR 04 07 현대M포인트사용
|
|
//PCKR 07 00 알리페이
|
|
//PCKR 07 01 WechatPay
|
|
//PCKR 07 02 스마일페이
|
|
//PCKR 07 03 T-PAY
|
|
//PCKR 09 00 T-MONEY
|
|
//PCKR 09 01 캐시비
|
|
//PCKR 10 02 해피기프트카드 (신)
|
|
|
|
sSelQuery = "SELECT '01' AS SLIP_FG \n" +
|
|
" ,ROUND ( CONVERT(VARCHAR, ISNULL(A.PAY_AMT, 0)) ,0) AS APPR_AMT \n" +
|
|
" ,A.OCCUR_ENTRY_11 AS PURCHASE_CD \n" +
|
|
" ,A.OCCUR_ENTRY_12 AS PURCHASE_CO_NM \n" +
|
|
" ,A.OCCUR_ENTRY_02 AS APPR_NO \n" +
|
|
" ,'20' + A.OCCUR_ENTRY_03 AS APPR_DAY \n" +
|
|
" ,A.OCCUR_ENTRY_04 + '00' AS APPR_TIME \n" +
|
|
" ,'0' AS CARD_GB \n" +
|
|
//#20180406 도로공사 수정 start
|
|
//DDC_GB : 구분되는 값 없을경우 0으로 전송
|
|
//기존
|
|
//" ,'1' AS DDC_GB \n" +
|
|
//변경
|
|
" ,'0' AS DDC_GB \n" +
|
|
//#20180406 도로공사 수정 end
|
|
" ,'' AS STD_CARD_CORD_CD \n" +
|
|
" ,'32' AS VAN_CD \n" +
|
|
" ,SUBSTRING(A.OCCUR_ENTRY_01,1,6) AS CARD_NO \n" +
|
|
" FROM POSLOG..TR_SALE_PAY A \n" +
|
|
" , POSLOG..TR_SALE_HEADER B \n" +
|
|
" WHERE A.CMP_CD = '{0}' \n" +
|
|
" AND A.SALE_DT = '{1}' \n" +
|
|
" AND A.STOR_CD = '{2}' \n" +
|
|
" AND A.POS_NO = '{3}' \n" +
|
|
" AND A.TRADE_NO = '{4}' \n" +
|
|
|
|
//2018-04-03 카드기준 추가
|
|
//기존
|
|
//" AND A.PAY_WAY_CD = '02' \n" +
|
|
//변경
|
|
" AND A.PAY_WAY_CD + A.PAY_DTL_CD_01 IN ('0200','0402','0406','0407','0700','0701','0702','0703','0900','0901','1002') \n" +
|
|
|
|
" AND A.PAY_DTL_CD_05 = '1' \n" +
|
|
" AND A.CANCEL_DIV = '0' \n" +
|
|
" AND A.CMP_CD = B.CMP_CD \n" +
|
|
" AND A.SALE_DT = B.SALE_DT \n" +
|
|
" AND A.STOR_CD = B.STOR_CD \n" +
|
|
" AND A.POS_NO = B.POS_NO \n" +
|
|
" AND A.TRADE_NO = B.TRADE_NO \n" +
|
|
" AND B.TRAIN_MODE_YN = '0' \n" +
|
|
" AND B.TRADE_KINDPER IN ('00','20','21','42') \n";
|
|
|
|
dtReturn = null;
|
|
sQuery = string.Format(sSelQuery, sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
|
|
if (dtReturn != null && dtReturn.Rows.Count != 0)
|
|
{
|
|
foreach (DataRow dr in dtReturn.Rows)
|
|
{
|
|
Hashtable ht_PAY_CARD = new Hashtable();
|
|
|
|
ht_PAY_CARD.Add(Pay_Card.SLIP_FG, CmUtil.GetDataRowStr(dr, "SLIP_FG"));
|
|
ht_PAY_CARD.Add(Pay_Card.APPR_AMT, CmUtil.GetDataRowStr(dr, "APPR_AMT"));
|
|
ht_PAY_CARD.Add(Pay_Card.PURCHASE_CD, CmUtil.GetDataRowStr(dr, "PURCHASE_CD"));
|
|
ht_PAY_CARD.Add(Pay_Card.PURCHASE_CO_NM, CmUtil.GetDataRowStr(dr, "PURCHASE_CO_NM"));
|
|
ht_PAY_CARD.Add(Pay_Card.APPR_NO, CmUtil.GetDataRowStr(dr, "APPR_NO"));
|
|
ht_PAY_CARD.Add(Pay_Card.APPR_DAY, CmUtil.GetDataRowStr(dr, "APPR_DAY"));
|
|
ht_PAY_CARD.Add(Pay_Card.APPR_TIME, CmUtil.GetDataRowStr(dr, "APPR_TIME"));
|
|
ht_PAY_CARD.Add(Pay_Card.CARD_GB, CmUtil.GetDataRowStr(dr, "CARD_GB"));
|
|
ht_PAY_CARD.Add(Pay_Card.DDC_GB, CmUtil.GetDataRowStr(dr, "DDC_GB"));
|
|
ht_PAY_CARD.Add(Pay_Card.STD_CARD_CORD_CD, CmUtil.GetDataRowStr(dr, "STD_CARD_CORD_CD"));
|
|
ht_PAY_CARD.Add(Pay_Card.VAN_CD, CmUtil.GetDataRowStr(dr, "VAN_CD"));
|
|
|
|
al_Payment.Add(ht_PAY_CARD);
|
|
ht_PAY_CARD = null;
|
|
}
|
|
}
|
|
|
|
#endregion 카드결제조회
|
|
|
|
|
|
#region 현금승인결제조회
|
|
|
|
//카드 제외한 나머지 결제 금액 - 현금 승인 금액 뺀 거
|
|
sQuery = "";
|
|
sSelQuery = "";
|
|
sSelQuery = " SELECT A.* , ROUND (ISNULL(A.APPR_AMT, 0) - ISNULL(A.ETC_AMT, 0),0) AS RESULT_AMT \n " +
|
|
" FROM \n " +
|
|
" ( \n " +
|
|
//2018-04-03 카드기준 추가
|
|
//기존
|
|
//" SELECT ROUND (SUM(CASE WHEN TSP.PAY_WAY_CD + TSP.PAY_DTL_CD_01 <> '0200' THEN \n " +
|
|
//" ISNULL(TSP.AMT_ENTRY_01, 0) - ISNULL(TSP.AMT_ENTRY_02, 0) \n " +
|
|
//" ELSE 0 END),0) AS APPR_AMT ,\n " +
|
|
|
|
//변경
|
|
" SELECT ROUND (ISNULL(TSP.AMT_ENTRY_01, 0) - ISNULL(TSP.AMT_ENTRY_02, 0) ,0) AS APPR_AMT,\n " +
|
|
|
|
" '02' AS SLIP_FG,\n " +
|
|
" '00' AS PROC_TYPE,\n " +
|
|
" '' AS APPR_NO,\n " +
|
|
" '' AS APPR_DAY,\n " +
|
|
" '' AS APPR_TYPE,\n " +
|
|
" '32' AS VAN_CD, \n" +
|
|
" ( SELECT ROUND (CONVERT(VARCHAR, ISNULL(TSE.ETC_AMT, 0)) ,0) AS APPR_AMT \n " +
|
|
" FROM POSLOG..TR_SALE_ETC TSE \n " +
|
|
" WHERE TSE.CMP_CD = '{0}' \n " +
|
|
" AND TSE.SALE_DT = '{1}' \n " +
|
|
" AND TSE.STOR_CD = '{2}' \n " +
|
|
" AND TSE.POS_NO = '{3}' \n " +
|
|
" AND TSE.TRADE_NO = '{4}' \n " +
|
|
" AND TSE.ETC_WAY_CD = '80' \n " +
|
|
" AND TSE.ETC_DTL_CD_01 = '00' \n " +
|
|
" AND TSE.CANCEL_DIV = '0') AS ETC_AMT \n " +
|
|
" FROM POSLOG..TR_SALE_HEADER TSH LEFT JOIN POSLOG..TR_SALE_PAY TSP \n " +
|
|
" ON TSH.CMP_CD = TSP.CMP_CD \n " +
|
|
" AND TSH.SALE_DT = TSP.SALE_DT \n " +
|
|
" AND TSH.STOR_CD = TSP.STOR_CD \n " +
|
|
" AND TSH.POS_NO = TSP.POS_NO \n " +
|
|
" AND TSH.TRADE_NO = TSP.TRADE_NO \n " +
|
|
|
|
//2018-04-03 카드기준 추가
|
|
//추가
|
|
" AND TSP.PAY_WAY_CD + TSP.PAY_DTL_CD_01 NOT IN ('0200','0402','0406','0407','0700','0701','0702','0703','0900','0901','1002') \n" +
|
|
|
|
|
|
|
|
" AND TSP.PAY_DTL_CD_05 = '1' \n " +
|
|
" AND TSP.CANCEL_DIV = '0' \n " +
|
|
" WHERE TSH.CMP_CD = '{0}' \n " +
|
|
" AND TSH.SALE_DT = '{1}' \n " +
|
|
" AND TSH.STOR_CD = '{2}' \n " +
|
|
" AND TSH.POS_NO = '{3}' \n " +
|
|
" AND TSH.TRADE_NO = '{4}' \n " +
|
|
" AND TSH.TRAIN_MODE_YN = '0' \n " +
|
|
" AND TSH.TRADE_KINDPER IN ('00','20','21','42') \n " +
|
|
" ) A \n " ;
|
|
|
|
dtReturn = null;
|
|
sQuery = string.Format(sSelQuery, sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
|
|
if (dtReturn != null && dtReturn.Rows.Count != 0)
|
|
{
|
|
DataRow dr = dtReturn.Rows[0];
|
|
// 결제 금액 전체를 현금영수증 승인했을 때는 생성하지 않도록 한다.
|
|
if (CmUtil.GetDataRowStr(dr, "RESULT_AMT") != "0")
|
|
{
|
|
Hashtable ht_PAY_CASH = new Hashtable();
|
|
ht_PAY_CASH.Add(Pay_Cash.SLIP_FG, CmUtil.GetDataRowStr(dr, "SLIP_FG"));
|
|
ht_PAY_CASH.Add(Pay_Cash.PROC_TYPE, CmUtil.GetDataRowStr(dr, "PROC_TYPE"));
|
|
// 전체결제 금액 - 카드결제금액 - 현금영수증 승인금액
|
|
ht_PAY_CASH.Add(Pay_Cash.APPR_AMT, CmUtil.GetDataRowStr(dr, "RESULT_AMT"));
|
|
ht_PAY_CASH.Add(Pay_Cash.APPR_NO, CmUtil.GetDataRowStr(dr, "APPR_NO"));
|
|
ht_PAY_CASH.Add(Pay_Cash.APPR_DAY, CmUtil.GetDataRowStr(dr, "APPR_DAY"));
|
|
ht_PAY_CASH.Add(Pay_Cash.APPR_TIME, CmUtil.GetDataRowStr(dr, "APPR_TIME"));
|
|
ht_PAY_CASH.Add(Pay_Cash.VAN_CD, CmUtil.GetDataRowStr(dr, "VAN_CD"));
|
|
al_Payment.Add(ht_PAY_CASH);
|
|
ht_PAY_CASH = null;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
sQuery = "";
|
|
sSelQuery = "";
|
|
sSelQuery = "SELECT '02' AS SLIP_FG \n " +
|
|
" , '00' AS PROC_TYPE \n " +
|
|
" , ROUND ( CONVERT(VARCHAR, ISNULL(A.ETC_AMT, 0)) ,0) AS APPR_AMT \n " +
|
|
" , A.OCCUR_ENTRY_02 AS APPR_NO \n " +
|
|
" , '20' + A.OCCUR_ENTRY_03 AS APPR_DAY \n " +
|
|
" , A.OCCUR_ENTRY_04 + '00' AS APPR_TIME \n " +
|
|
" , '32' AS VAN_CD \n " +
|
|
" , (CASE WHEN A.OCCUR_ENTRY_10 = '1' THEN '0' \n " +
|
|
" ELSE CASE WHEN A.OCCUR_ENTRY_11 = '0' THEN '1' \n " +
|
|
" ELSE '2' END \n " +
|
|
" END) AS APPR_TYPE \n " +
|
|
" FROM POSLOG..TR_SALE_ETC A \n " +
|
|
" , POSLOG..TR_SALE_HEADER B \n " +
|
|
" WHERE A.CMP_CD = '{0}' \n " +
|
|
" AND A.SALE_DT = '{1}' \n " +
|
|
" AND A.STOR_CD = '{2}' \n " +
|
|
" AND A.POS_NO = '{3}' \n " +
|
|
" AND A.TRADE_NO = '{4}' \n " +
|
|
" AND A.ETC_WAY_CD = '80' \n " +
|
|
" AND A.ETC_DTL_CD_01 = '00' \n " +
|
|
" AND A.CMP_CD = B.CMP_CD \n " +
|
|
" AND A.STOR_CD = B.STOR_CD \n " +
|
|
" AND A.SALE_DT = B.SALE_DT \n " +
|
|
" AND A.POS_NO = B.POS_NO \n " +
|
|
" AND A.TRADE_NO = B.TRADE_NO \n " +
|
|
" AND B.TRAIN_MODE_YN = '0' \n " +
|
|
" AND B.TRADE_KINDPER IN ('00','20','21','42') \n ";
|
|
|
|
dtReturn = null;
|
|
sQuery = string.Format(sSelQuery, sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
|
|
if (dtReturn != null && dtReturn.Rows.Count != 0)
|
|
{
|
|
//foreach (DataRow dr in dtReturn.Rows)
|
|
//{
|
|
|
|
DataRow dr = dtReturn.Rows[0];
|
|
|
|
Hashtable ht_PAY_CASH = new Hashtable();
|
|
ht_PAY_CASH.Add(Pay_Cash.SLIP_FG, CmUtil.GetDataRowStr(dr, "SLIP_FG"));
|
|
//"00" : 현금, "01" : 상품권, "02" : 모바일쿠폰, "03" : 나이스선불카드, "04" : 마이탐 선불카드
|
|
ht_PAY_CASH.Add(Pay_Cash.PROC_TYPE, CmUtil.GetDataRowStr(dr, "PROC_TYPE"));
|
|
ht_PAY_CASH.Add(Pay_Cash.APPR_AMT, CmUtil.GetDataRowStr(dr, "APPR_AMT"));
|
|
ht_PAY_CASH.Add(Pay_Cash.APPR_NO, CmUtil.GetDataRowStr(dr, "APPR_NO"));
|
|
ht_PAY_CASH.Add(Pay_Cash.APPR_DAY, CmUtil.GetDataRowStr(dr, "APPR_DAY"));
|
|
ht_PAY_CASH.Add(Pay_Cash.APPR_TIME, CmUtil.GetDataRowStr(dr, "APPR_TIME"));
|
|
ht_PAY_CASH.Add(Pay_Cash.VAN_CD, CmUtil.GetDataRowStr(dr, "VAN_CD"));
|
|
al_Payment.Add(ht_PAY_CASH);
|
|
ht_PAY_CASH = null;
|
|
//}
|
|
}
|
|
#endregion 현금승인결제조회
|
|
|
|
AlSaleSPData = al_Payment;
|
|
|
|
bRet = true;
|
|
|
|
}
|
|
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 (함수명))
|
|
"도로공사 Hi-쉼마루 SaleSP -> " + sQuery + " : " + ex.Message);
|
|
|
|
bRet = false;
|
|
}
|
|
|
|
return bRet;
|
|
}
|
|
#endregion
|
|
//#20180322 휴게소pos매출연동 end,phj
|
|
|
|
//#20180322 휴게소pos매출연동 start,phj
|
|
#region 상세조회
|
|
private bool MakeSaleDTData(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo, ref ArrayList AlSaleDTData)
|
|
{
|
|
bool bRet = false;
|
|
string sQuery = string.Empty;
|
|
string sSelQuery = string.Empty;
|
|
|
|
DataTable dtReturn = new DataTable();
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
Column.RESTAREA_SALE_DT.DATA RESTAREA_SALE_DT = null;
|
|
RESTAREA_SALE_DT = new Column.RESTAREA_SALE_DT.DATA();
|
|
|
|
ArrayList al_SaleDT = null;
|
|
al_SaleDT = new ArrayList();
|
|
al_SaleDT.Clear();
|
|
|
|
try
|
|
{
|
|
#region SALE_DT
|
|
|
|
sQuery = "";
|
|
sSelQuery = "";
|
|
//#20180406 도로공사 수정 start
|
|
//LINE_NO : 1자리일 경우 앞에 0채워서 2자리로 생성
|
|
//기존
|
|
//sSelQuery = "SELECT CONVERT(VARCHAR, A.SEQ) AS LINE_NO \n "
|
|
//변경
|
|
sSelQuery = "SELECT REPLICATE('0', 2 - LEN(CONVERT(VARCHAR, A.SEQ))) + CONVERT(VARCHAR, A.SEQ) AS LINE_NO \n " +
|
|
//#20180406 도로공사 수정 end
|
|
//" , A.STOR_CD AS SHOP_CD \n " +
|
|
" ,'" + m_cPosStatus.RestAreaPos.RestAreaPosCd.PadLeft(7, '0').Trim() + "' AS SHOP_CD \n " +
|
|
//" , CONVERT(VARCHAR, A.SEQ) AS PROD_SEQ \n " +
|
|
" , A.ITEM_PLU_CD AS PROD_SEQ \n " +
|
|
" , '' AS SOURCE_CD \n " +
|
|
" , CONVERT(VARCHAR, ISNULL(A.SALE_QTY, 0)) AS PAN_QTY \n " +
|
|
" , ROUND (CONVERT(VARCHAR, ISNULL(A.SALE_AMT, 0)) ,0) AS TOT_PAN_AMT \n " +
|
|
" , '00' AS NOZZLE_NO \n " +
|
|
" , CONVERT(VARCHAR, ISNULL(A.SALE_PRC, 0)) AS PAN_COST \n " +
|
|
" , '0' AS FEE_COST \n " +
|
|
" , '0' AS OIL_PROC_GB \n " +
|
|
" , ROUND ('0' ,0) AS PRE_PAY_AMT \n " +
|
|
" , ROUND ('0' ,0) AS FEE_AMT \n " +
|
|
" , ROUND ('0' ,0) AS SC_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, A.BILL_AMT) ,0) AS REAL_PAN_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, A.APPLY_TAX_AMT) ,0) AS VAT_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, ISNULL(A.BILL_AMT, 0) - ISNULL(A.APPLY_TAX_AMT, 0)) ,0) AS NET_PAN_AMT \n " +
|
|
" , '0' AS NOZZLE_END_DTIME \n " +
|
|
" , '0' AS DUTY_PAN_GB \n " +
|
|
" , ROUND (CONVERT(VARCHAR, ISNULL(A.ITEM_DC_AMT, 0) + ISNULL(A.SUM_DC_AMT, 0) + \n " +
|
|
" ISNULL(A.CPI_DC_AMT, 0) + ISNULL(A.COOP_CARD_DC_AMT, 0) + \n " +
|
|
" ISNULL(A.POINT_DC_AMT, 0) + ISNULL(A.CPN_DC_AMT, 0) + \n " +
|
|
" ISNULL(A.EMP_DC_AMT, 0) + ISNULL(A.SET_DC_AMT, 0) + \n " +
|
|
" ISNULL(A.ETC_DC_AMT, 0) + ISNULL(A.EXCEP_DC_AMT, 0)) ,0) AS DC_AMT \n " +
|
|
//" , ROUND ('0' ,0) AS NORM_DC_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, ISNULL(A.ITEM_DC_AMT, 0) + ISNULL(A.SUM_DC_AMT, 0) + \n " +
|
|
" ISNULL(A.CPI_DC_AMT, 0) + ISNULL(A.COOP_CARD_DC_AMT, 0) + \n " +
|
|
" ISNULL(A.POINT_DC_AMT, 0) + ISNULL(A.CPN_DC_AMT, 0) + \n " +
|
|
" ISNULL(A.EMP_DC_AMT, 0) + ISNULL(A.SET_DC_AMT, 0) + \n " +
|
|
" ISNULL(A.ETC_DC_AMT, 0) + ISNULL(A.EXCEP_DC_AMT, 0)) ,0) AS NORM_DC_AMT \n " +
|
|
" , ROUND ('0' ,0) AS BONUS_DC_AMT \n " +
|
|
" , ROUND ('0' ,0) AS RAND_BONUS_DC_AMT \n " +
|
|
" FROM POSLOG..TR_SALE_DETAIL A \n " +
|
|
" , POSLOG..TR_SALE_HEADER B \n " +
|
|
" WHERE A.CMP_CD = '{0}' \n " +
|
|
" AND A.SALE_DT = '{1}' \n " +
|
|
" AND A.STOR_CD = '{2}' \n " +
|
|
" AND A.POS_NO = '{3}' \n " +
|
|
" AND A.TRADE_NO = '{4}' \n " +
|
|
" AND A.CMP_CD = B.CMP_CD \n " +
|
|
" AND A.SALE_DT = B.SALE_DT \n " +
|
|
" AND A.STOR_CD = B.STOR_CD \n " +
|
|
" AND A.POS_NO = B.POS_NO \n " +
|
|
" AND A.TRADE_NO = B.TRADE_NO \n " +
|
|
" AND B.TRAIN_MODE_YN = '0' \n " +
|
|
" AND B.TRADE_KINDPER IN ('00','20','21','42') \n " +
|
|
" AND A.CANCEL_DIV = '0' \n " +
|
|
// 판매단가가 0원이 아닌 것만 보냄.
|
|
" AND A.SALE_PRC > 0 \n" +
|
|
" ORDER BY A.SEQ \n ";
|
|
|
|
dtReturn = null;
|
|
sQuery = string.Format(sSelQuery, sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
|
|
if (dtReturn != null && dtReturn.Rows.Count != 0)
|
|
{
|
|
foreach (DataRow dr in dtReturn.Rows)
|
|
{
|
|
Hashtable tr_SaleDT = new Hashtable();
|
|
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.LINE_NO, CmUtil.GetDataRowStr(dr, "LINE_NO"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.SHOP_CD, CmUtil.GetDataRowStr(dr, "SHOP_CD"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.PROD_SEQ, CmUtil.GetDataRowStr(dr, "PROD_SEQ"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.SOURCE_CD, CmUtil.GetDataRowStr(dr, "SOURCE_CD")); //cPluItem.ITEM_PLU_CD
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.PAN_QTY, CmUtil.GetDataRowStr(dr, "PAN_QTY"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.TOT_PAN_AMT, CmUtil.GetDataRowStr(dr, "TOT_PAN_AMT"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.NOZZLE_NO, CmUtil.GetDataRowStr(dr, "NOZZLE_NO"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.PAN_COST, CmUtil.GetDataRowStr(dr, "PAN_COST"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.FEE_COST, CmUtil.GetDataRowStr(dr, "FEE_COST"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.OIL_PROC_GB, CmUtil.GetDataRowStr(dr, "OIL_PROC_GB"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.PRE_PAY_AMT, CmUtil.GetDataRowStr(dr, "PRE_PAY_AMT"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.FEE_AMT, CmUtil.GetDataRowStr(dr, "FEE_AMT"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.SC_AMT, CmUtil.GetDataRowStr(dr, "SC_AMT"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.REAL_PAN_AMT, CmUtil.GetDataRowStr(dr, "REAL_PAN_AMT"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.VAT_AMT, CmUtil.GetDataRowStr(dr, "VAT_AMT"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.NET_PAN_AMT, CmUtil.GetDataRowStr(dr, "NET_PAN_AMT"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.NOZZLE_END_DTIME, CmUtil.GetDataRowStr(dr, "NOZZLE_END_DTIME"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.DUTY_PAN_GB, CmUtil.GetDataRowStr(dr, "DUTY_PAN_GB"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.DC_AMT, CmUtil.GetDataRowStr(dr, "DC_AMT"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.NORM_DC_AMT, CmUtil.GetDataRowStr(dr, "NORM_DC_AMT"));
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.BONUS_DC_AMT, CmUtil.GetDataRowStr(dr, "BONUS_DC_AMT"));
|
|
|
|
//RAND_BONUS_DC_AMT String 14 Y 1 임의등록 보너스카드 DC 금액(미사용)
|
|
tr_SaleDT.Add(RESTAREA_SALE_DT.RAND_BONUS_DC_AMT, CmUtil.GetDataRowStr(dr, "RAND_BONUS_DC_AMT"));
|
|
|
|
al_SaleDT.Add(tr_SaleDT);
|
|
tr_SaleDT = null;
|
|
}
|
|
}
|
|
|
|
#endregion SALE_DT
|
|
|
|
AlSaleDTData = al_SaleDT;
|
|
|
|
bRet = true;
|
|
|
|
}
|
|
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 (함수명))
|
|
"도로공사 Hi-쉼마루 SaleDT -> " + sQuery + " : " + ex.Message);
|
|
|
|
bRet = false;
|
|
}
|
|
|
|
return bRet;
|
|
}
|
|
#endregion
|
|
//#20180322 휴게소pos매출연동 end,phj
|
|
|
|
//#20180322 휴게소pos매출연동 start,phj
|
|
#region 헤더조회
|
|
private bool MakeSaleHDData(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sTradeNo, ref Hashtable htSaleHDData)
|
|
{
|
|
bool bRet = false;
|
|
string sQuery = string.Empty;
|
|
string sSelQuery = string.Empty;
|
|
|
|
DataTable dtReturn = new DataTable();
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
Column.RESTAREA_SALE_HD.DATA RESTAREA_SALE_HD = null;
|
|
RESTAREA_SALE_HD = new Column.RESTAREA_SALE_HD.DATA();
|
|
|
|
|
|
Hashtable ht_SaleHD = null;
|
|
ht_SaleHD = new Hashtable();
|
|
ht_SaleHD.Clear();
|
|
|
|
try
|
|
{
|
|
#region SALE_HD
|
|
|
|
sQuery = "";
|
|
sSelQuery = "";
|
|
sSelQuery = "SELECT A.SALE_DT AS SALE_DAY \n " +
|
|
//#20180406 도로공사 수정 start
|
|
//BILL_NO : 앞에 0 채워서 8자리로 생성
|
|
//기존
|
|
//" , A.TRADE_NO AS BILL_NO \n " +
|
|
//변경
|
|
" , REPLICATE('0', 8 - LEN(A.TRADE_NO)) + A.TRADE_NO AS BILL_NO \n " +
|
|
//#20180406 도로공사 수정 end
|
|
" , A.TRADE_DIV AS SALE_GB \n " +
|
|
" , A.SYS_DT + A.PAY_TIME AS SYS_DTIME \n " +
|
|
" , CONVERT(VARCHAR, C.TRDTL_CNT) AS DETAIL_CNT \n " +
|
|
//#20180403 도로공사 현금전표 분기에 따른 총전표건수 계산식 변경 start
|
|
//기존
|
|
//" , CONVERT(VARCHAR, (CASE WHEN ISNULL(B.CASH_AMT,0) > 0 THEN 1 ELSE 0 END) + B.TRCRD_CNT) AS SLIP_CNT \n " +
|
|
//변경
|
|
// 1. 현금처리 금액이 있는지 체크
|
|
// 2. 현금처리 금액 - 현금 영수증 금액 빼서 0보다 크면 현금전표 2건 생성되고 아니면 1건 생성
|
|
// 3. 현금처리 금액이 없으면 현금전표 0건 생성
|
|
" , CONVERT(VARCHAR, (CASE WHEN ISNULL(B.CASH_AMT,0) = 0 THEN 0 \n " +
|
|
" ELSE ( CASE WHEN D.TRCSH_CNT = '1' THEN (CASE WHEN ISNULL(B.CASH_AMT,0) - ISNULL(D.CASH_BILL_AMT,0) > 0 THEN 2 ELSE 1 END) \n " +
|
|
" ELSE '1' \n " +
|
|
" END) \n " +
|
|
" END) + B.TRCRD_CNT) AS SLIP_CNT \n " +
|
|
//#20180403 도로공사 현금전표 분기에 따른 총전표건수 계산식 변경 end
|
|
" , ROUND (CONVERT(VARCHAR, ISNULL(A.TOTSALE_AMT, 0)),0) AS TOT_PAN_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, B.CASH_AMT),0) AS CASH_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, B.CRD_CARD_AMT),0) AS CARD_AMT \n " +
|
|
" , ROUND ('0',0) AS GIFT_AMT \n " +
|
|
" , ROUND ('0',0) AS SC_AMT \n " +
|
|
" , ROUND ('0',0) AS PRE_PAY_AMT \n " +
|
|
" , ROUND ('0',0) AS FEE_PROFIT_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, ISNULL(A.NET_SALE_AMT, 0)),0) AS REAL_PAN_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, ISNULL(A.TOT_VAT, 0)), 0) AS VAT_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, ISNULL(A.NET_SALE_AMT, 0) - ISNULL(A.TOT_VAT, 0)),0) AS NET_PAN_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, D.TRCSH_CNT),0) AS CASH_BILL_GB \n " +
|
|
" , CASE WHEN TRADE_DIV = '1' THEN \n " +
|
|
//#20180406 도로공사 수정 start
|
|
//ORB_BILL_NO : 년도 YYYY형식으로 수정, 빌번호 8자리
|
|
//기존
|
|
//" (SUBSTRING(A.ORG_BILLDT,3,6) + \n " +
|
|
//변경
|
|
" (A.ORG_BILLDT + \n " +
|
|
//#20180406 도로공사 수정 end
|
|
//" '000' + \n " +
|
|
" '" + m_cPosStatus.RestAreaPos.RestAreaPosGroupCd.PadLeft(3, '0').Trim() + "' + \n " +
|
|
//" SUBSTRING(A.STOR_CD, 2, 6) + \n " + 기존6자리에서 7자리로 늘임
|
|
//" SUBSTRING(A.STOR_CD, 1, 7) + \n " +
|
|
" '" + m_cPosStatus.RestAreaPos.RestAreaPosCd.PadLeft(7, '0').Trim() + "' + \n " +
|
|
//" '00' + \n " +
|
|
" '" + m_cPosStatus.RestAreaPos.RestAreaPosPosGroupCd.PadLeft(2, '0').Trim() + "' + \n " +
|
|
//" REPLICATE('0', 4 - LEN(A.ORG_BILL_POSNO)) + A.ORG_BILL_POSNO + \n " +
|
|
" REPLICATE('0', 4 - LEN('" + m_cPosStatus.RestAreaPos.RestAreaPosPosNo.PadLeft(4, '0').Trim() + "')) + '" + m_cPosStatus.RestAreaPos.RestAreaPosPosNo.PadLeft(4, '0').Trim() + "' + \n " +
|
|
" REPLICATE('0', 8 - LEN(A.ORG_BILL_NO)) + A.ORG_BILL_NO) \n " +
|
|
" ELSE '' END AS ORG_BILL_NO \n " +
|
|
" , '' AS EMP_ID \n " +
|
|
" , '' AS OIL_PROC_CB \n " +
|
|
" , ROUND ('0',0) AS BONUS_USE_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, A.TOTDC_AMT),0) AS DC_AMT \n " +
|
|
//" , ROUND ('0',0) AS NORM_DC_AMT \n " +
|
|
" , ROUND (CONVERT(VARCHAR, A.TOTDC_AMT),0) AS NORM_DC_AMT \n " +
|
|
" , ROUND ('0',0) AS BONUS_DC_AMT \n " +
|
|
" , ROUND ('0',0) AS RAND_BONUS_DC_AMT \n " +
|
|
" FROM POSLOG..TR_SALE_HEADER A \n " +
|
|
" , ( \n " +
|
|
|
|
|
|
//2018-04-03 카드기준 추가
|
|
//기존
|
|
//" SELECT ROUND (SUM(CASE WHEN TSP.PAY_WAY_CD + TSP.PAY_DTL_CD_01 <> '0200' \n " +
|
|
//" THEN ISNULL(TSP.AMT_ENTRY_01, 0) - ISNULL(TSP.AMT_ENTRY_02, 0) \n " +
|
|
//" ELSE 0 \n " +
|
|
//" END),0) AS CASH_AMT \n " +
|
|
//" , ROUND (SUM(CASE WHEN TSP.PAY_WAY_CD + TSP.PAY_DTL_CD_01 = '0200' \n " +
|
|
//" THEN 1 \n " +
|
|
//" ELSE 0 \n " +
|
|
//" END),0) AS TRCRD_CNT \n " +
|
|
//" , ROUND (SUM(CASE WHEN TSP.PAY_WAY_CD + TSP.PAY_DTL_CD_01 = '0200' \n " +
|
|
//" THEN ISNULL(TSP.AMT_ENTRY_01, 0) \n " +
|
|
//" ELSE 0 \n " +
|
|
//" END),0) AS CRD_CARD_AMT \n " +
|
|
//변경
|
|
" SELECT ROUND (SUM(CASE WHEN TSP.PAY_WAY_CD + TSP.PAY_DTL_CD_01 NOT IN ('0200','0402','0406','0407','0700','0701','0702','0703','0900','0901','1002') \n " +
|
|
" THEN ISNULL(TSP.AMT_ENTRY_01, 0) - ISNULL(TSP.AMT_ENTRY_02, 0) \n " +
|
|
" ELSE 0 \n " +
|
|
" END),0) AS CASH_AMT \n " +
|
|
|
|
|
|
|
|
//2018-04-03 카드기준 추가
|
|
//기존
|
|
//" , ROUND (SUM(CASE WHEN TSP.PAY_WAY_CD + TSP.PAY_DTL_CD_01 = '0200' \n " +
|
|
//" THEN 1 \n " +
|
|
//" ELSE 0 \n " +
|
|
//" END),0) AS TRCRD_CNT \n " +
|
|
//변경
|
|
" , ROUND (SUM(CASE WHEN TSP.PAY_WAY_CD + TSP.PAY_DTL_CD_01 IN ('0200','0402','0406','0407','0700','0701','0702','0703','0900','0901','1002') \n " +
|
|
" THEN 1 \n " +
|
|
" ELSE 0 \n " +
|
|
" END),0) AS TRCRD_CNT \n " +
|
|
|
|
//2018-04-03 카드기준 추가
|
|
//기존
|
|
//" , ROUND (SUM(CASE WHEN TSP.PAY_WAY_CD + TSP.PAY_DTL_CD_01 = '0200' \n " +
|
|
//" THEN ISNULL(TSP.AMT_ENTRY_01, 0) \n " +
|
|
//" ELSE 0 \n " +
|
|
//" END),0) AS CRD_CARD_AMT \n " +
|
|
//변경
|
|
" , ROUND (SUM(CASE WHEN TSP.PAY_WAY_CD + TSP.PAY_DTL_CD_01 IN ('0200','0402','0406','0407','0700','0701','0702','0703','0900','0901','1002') \n " +
|
|
" THEN ISNULL(TSP.AMT_ENTRY_01, 0) \n " +
|
|
" ELSE 0 \n " +
|
|
" END),0) AS CRD_CARD_AMT \n " +
|
|
|
|
|
|
" , ROUND (SUM(ISNULL(TSP.PAY_AMT, 0)),0) AS GST_PAY_AMT \n " +
|
|
" , ROUND (SUM(ISNULL(TSP.AMT_ENTRY_02, 0)),0) AS RET_PAY_AMT \n " +
|
|
" , ROUND (0,0) AS REPAY_CASH_AMT \n " +
|
|
" FROM POSLOG..TR_SALE_HEADER TSH \n " +
|
|
" LEFT JOIN POSLOG..TR_SALE_PAY TSP \n " +
|
|
" ON TSH.CMP_CD = TSP.CMP_CD \n " +
|
|
" AND TSH.SALE_DT = TSP.SALE_DT \n " +
|
|
" AND TSH.STOR_CD = TSP.STOR_CD \n " +
|
|
" AND TSH.POS_NO = TSP.POS_NO \n " +
|
|
" AND TSH.TRADE_NO = TSP.TRADE_NO \n " +
|
|
" AND TSP.PAY_DTL_CD_05 = '1' \n " +
|
|
" AND TSP.CANCEL_DIV = '0' \n " +
|
|
" WHERE TSH.CMP_CD = '{0}' \n " +
|
|
" AND TSH.SALE_DT = '{1}' \n " +
|
|
" AND TSH.STOR_CD = '{2}' \n " +
|
|
" AND TSH.POS_NO = '{3}' \n " +
|
|
" AND TSH.TRADE_NO = '{4}' \n " +
|
|
" AND TSH.TRAIN_MODE_YN = '0' \n " +
|
|
" AND TSH.TRADE_KINDPER IN ('00','20','21','42') \n " +
|
|
" ) B \n " +
|
|
" , ( \n " +
|
|
" SELECT SUM(CASE WHEN ISNULL(TSD.SALE_AMT, 0) = 0 \n " +
|
|
" THEN 0 \n " +
|
|
" ELSE 1 \n " +
|
|
" END) AS TRDTL_CNT \n " +
|
|
" , ROUND (SUM(CASE WHEN ISNULL(TSD.APPLY_TAX_AMT, 0) = 0 \n " +
|
|
" THEN 0 \n " +
|
|
" ELSE ISNULL(TSD.BILL_AMT, 0) - ISNULL(TSD.APPLY_TAX_AMT, 0) \n " +
|
|
" END),0) AS VAT_SALE_AMT \n " +
|
|
" , ROUND (SUM(CASE WHEN ISNULL(TSD.APPLY_TAX_AMT, 0) = 0 \n " +
|
|
" THEN ISNULL(TSD.SALE_AMT, 0) \n " +
|
|
" ELSE 0 \n " +
|
|
" END),0) AS NO_VAT_SALE_AMT \n " +
|
|
" FROM POSLOG..TR_SALE_HEADER TSH \n " +
|
|
" LEFT JOIN POSLOG..TR_SALE_DETAIL TSD \n " +
|
|
" ON TSH.CMP_CD = TSD.CMP_CD \n " +
|
|
" AND TSH.SALE_DT = TSD.SALE_DT \n " +
|
|
" AND TSH.STOR_CD = TSD.STOR_CD \n " +
|
|
" AND TSH.POS_NO = TSD.POS_NO \n " +
|
|
" AND TSH.TRADE_NO = TSD.TRADE_NO \n " +
|
|
" AND TSD.CANCEL_DIV = '0' \n " +
|
|
" WHERE TSH.CMP_CD = '{0}' \n " +
|
|
" AND TSH.SALE_DT = '{1}' \n " +
|
|
" AND TSH.STOR_CD = '{2}' \n " +
|
|
" AND TSH.POS_NO = '{3}' \n " +
|
|
" AND TSH.TRADE_NO = '{4}' \n " +
|
|
" AND TSH.TRAIN_MODE_YN = '0' \n " +
|
|
" AND TSH.TRADE_KINDPER IN ('00','20','21','42') \n " +
|
|
" ) C \n " +
|
|
" , ( \n " +
|
|
" SELECT SUM(CASE WHEN TSE.ETC_DTL_CD_01 = '00' \n " +
|
|
" THEN 1 \n " +
|
|
" ELSE 0 \n " +
|
|
" END) AS TRCSH_CNT \n " +
|
|
" , ISNULL(SUM(TSE.ETC_AMT), 0) AS CASH_BILL_AMT \n " +
|
|
" FROM POSLOG..TR_SALE_HEADER TSH \n " +
|
|
" LEFT JOIN POSLOG..TR_SALE_ETC TSE \n " +
|
|
" ON TSH.CMP_CD = TSE.CMP_CD \n " +
|
|
" AND TSH.SALE_DT = TSE.SALE_DT \n " +
|
|
" AND TSH.STOR_CD = TSE.STOR_CD \n " +
|
|
" AND TSH.POS_NO = TSE.POS_NO \n " +
|
|
" AND TSH.TRADE_NO = TSE.TRADE_NO \n " +
|
|
" AND TSE.ETC_WAY_CD = '80' \n " +
|
|
" WHERE TSH.CMP_CD = '{0}' \n " +
|
|
" AND TSH.SALE_DT = '{1}' \n " +
|
|
" AND TSH.STOR_CD = '{2}' \n " +
|
|
" AND TSH.POS_NO = '{3}' \n " +
|
|
" AND TSH.TRADE_NO = '{4}' \n " +
|
|
" AND TSH.TRAIN_MODE_YN = '0' \n " +
|
|
" AND TSH.TRADE_KINDPER IN ('00','20','21','42') \n " +
|
|
" ) D \n " +
|
|
" WHERE A.CMP_CD = '{0}' \n " +
|
|
" AND A.SALE_DT = '{1}' \n " +
|
|
" AND A.STOR_CD = '{2}' \n " +
|
|
" AND A.POS_NO = '{3}' \n " +
|
|
" AND A.TRADE_NO = '{4}' \n " +
|
|
" AND A.TRAIN_MODE_YN = '0' \n " +
|
|
" AND A.TRADE_KINDPER IN ('00','20','21','42') \n ";
|
|
|
|
dtReturn = null;
|
|
sQuery = string.Format(sSelQuery, sCmpCd, sSaleDt, sStorCd, sPosNo, sTradeNo);
|
|
sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtReturn);
|
|
|
|
if (dtReturn != null && dtReturn.Rows.Count != 0)
|
|
{
|
|
DataRow dr = dtReturn.Rows[0];
|
|
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.SALE_DAY, CmUtil.GetDataRowStr(dr, "SALE_DAY"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.BILL_NO, CmUtil.GetDataRowStr(dr, "BILL_NO"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.SALE_GB, CmUtil.GetDataRowStr(dr, "SALE_GB"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.SYS_DTIME, CmUtil.GetDataRowStr(dr, "SYS_DTIME"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.DETAIL_CNT, CmUtil.GetDataRowStr(dr, "DETAIL_CNT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.SLIP_CNT, CmUtil.GetDataRowStr(dr, "SLIP_CNT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.TOT_PAN_AMT, CmUtil.GetDataRowStr(dr, "TOT_PAN_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.CASH_AMT, CmUtil.GetDataRowStr(dr, "CASH_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.CARD_AMT, CmUtil.GetDataRowStr(dr, "CARD_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.GIFT_AMT, CmUtil.GetDataRowStr(dr, "GIFT_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.SC_AMT, CmUtil.GetDataRowStr(dr, "SC_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.PRE_PAY_AMT, CmUtil.GetDataRowStr(dr, "PRE_PAY_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.FEE_PROFIT_AMT, CmUtil.GetDataRowStr(dr, "FEE_PROFIT_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.REAL_PAN_AMT, CmUtil.GetDataRowStr(dr, "REAL_PAN_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.VAT_AMT, CmUtil.GetDataRowStr(dr, "VAT_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.NET_PAN_AMT, CmUtil.GetDataRowStr(dr, "NET_PAN_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.CASH_BILL_GB, CmUtil.GetDataRowStr(dr, "CASH_BILL_GB"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.ORG_BILL_NO, CmUtil.GetDataRowStr(dr, "ORG_BILL_NO"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.EMP_ID, CmUtil.GetDataRowStr(dr, "EMP_ID"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.OIL_PROC_CB, CmUtil.GetDataRowStr(dr, "OIL_PROC_CB"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.BONUS_USE_AMT, CmUtil.GetDataRowStr(dr, "BONUS_USE_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.DC_AMT, CmUtil.GetDataRowStr(dr, "DC_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.NORM_DC_AMT, CmUtil.GetDataRowStr(dr, "NORM_DC_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.BONUS_DC_AMT, CmUtil.GetDataRowStr(dr, "BONUS_DC_AMT"));
|
|
ht_SaleHD.Add(RESTAREA_SALE_HD.RAND_BONUS_DC_AMT, CmUtil.GetDataRowStr(dr, "RAND_BONUS_DC_AMT"));
|
|
}
|
|
|
|
#endregion SALE_HD
|
|
|
|
htSaleHDData = ht_SaleHD;
|
|
|
|
bRet = true;
|
|
}
|
|
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 (함수명))
|
|
"도로공사 Hi-쉼마루 SaleHD -> " + sQuery + " : " + ex.Message);
|
|
|
|
bRet = false;
|
|
}
|
|
|
|
return bRet;
|
|
}
|
|
#endregion
|
|
//#20180322 휴게소pos매출연동 end,phj
|
|
|
|
//#15945 해피오더 자동주문 상세기능 start
|
|
//해피오더 자동주문 로그 전송(HPO_AUTOORDER_LOG)
|
|
public void HappyOrderAutoOrderLogSendProcess()
|
|
{
|
|
DataTable dtReturn = null;
|
|
Hashtable htData = null;
|
|
|
|
string sSendFlag = string.Empty;
|
|
string sCmpCd = string.Empty;
|
|
string sBrandCd = string.Empty;
|
|
string sStorCd = string.Empty;
|
|
string sSaleDt = string.Empty;
|
|
string sPosNo = string.Empty;
|
|
string sStatus = string.Empty;
|
|
string sOrderNo = string.Empty;
|
|
string sOrderType = string.Empty;
|
|
|
|
try
|
|
{
|
|
// 전송할 HPO_AUTOORDER_LOG 데이터 생성
|
|
htData = GetHappyOrderAutoOrderLogData(ref dtReturn);
|
|
|
|
|
|
if (dtReturn == null || dtReturn.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
iSendDataCnt += 1;
|
|
}
|
|
|
|
sCmpCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "CMP_CD");
|
|
sBrandCd = m_cPosStatus.Base.BrandCd;
|
|
sSaleDt = CmUtil.GetDataRowStr(dtReturn.Rows[0], "SALE_DT");
|
|
sStorCd = CmUtil.GetDataRowStr(dtReturn.Rows[0], "STOR_CD");
|
|
sPosNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "POS_NO");
|
|
sOrderType = CmUtil.GetDataRowStr(dtReturn.Rows[0], "ORDER_TYPE");
|
|
sOrderNo = CmUtil.GetDataRowStr(dtReturn.Rows[0], "ORDER_NO");
|
|
sStatus = CmUtil.GetDataRowStr(dtReturn.Rows[0], "STATUS");
|
|
|
|
|
|
|
|
string sReturn = SendProcess(m_cPosStatus.Base.CommSvrIp,
|
|
Convert.ToInt32(m_cPosStatus.Base.JrnlPort),
|
|
5000,
|
|
new string[] { sCmpCd, sBrandCd, sStorCd, sSaleDt, sPosNo, "" },
|
|
ItemConst.COMM_MSG_TYPE.HPO_AUTOORDER_LOG,
|
|
htData);
|
|
|
|
if (sReturn == UserCom.RST_OK)
|
|
{
|
|
sSendFlag = "1"; // 정상 전송
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "1";
|
|
}
|
|
else
|
|
{
|
|
sSendFlag = "9"; // 에러
|
|
|
|
m_cPosStatus.Sale.OnLineStatus = "0";
|
|
}
|
|
}
|
|
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);
|
|
sSendFlag = "9";
|
|
}
|
|
finally
|
|
{
|
|
// Flag Update
|
|
HappyOrderAutoOrderLogUpdate(sCmpCd, sSaleDt, sStorCd, sPosNo, sOrderNo, sStatus, sSendFlag);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 데이터 조회
|
|
/// </summary>
|
|
/// <param name="dtReturn"></param>
|
|
/// <returns></returns>
|
|
public Hashtable GetHappyOrderAutoOrderLogData(ref DataTable dtReturn)
|
|
{
|
|
Hashtable htReturn = null;
|
|
string sQuery = string.Empty;
|
|
|
|
DataTable dtTempReturn = null;
|
|
try
|
|
{
|
|
/////////////////////////////////////////////////////////////////
|
|
/// 중요! 테이블 컬럼명 갯수와 명칭은 동일 해야함!
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
//00013523PCKR002 0000007 201808025400002201807301740181000{"ORDER_NO":"A100","STATUS":"5","PRE_STATUS":"4", "CLOUD_RES":"200", "GUBUN":"P", "CASHIER_ID":"0000007123", "REG_DATE":"201808031159"}
|
|
sQuery += "SELECT TOP 1 ";
|
|
sQuery += " CMP_CD,SALE_DT,STOR_CD,POS_NO,ORDER_NO,PRE_STATUS,STATUS,ORDER_TYPE,CLOUD_RES,GUBUN,CASHIER_ID,REG_DATE ";
|
|
sQuery += " FROM POSLOG.dbo.TR_AUTOMATICSHIPMENT_LOG ";
|
|
sQuery += " WHERE SEND_YN <> '1' ";
|
|
sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
|
|
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
|
|
sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "' ";
|
|
sQuery += " ORDER BY SEND_YN ASC ";
|
|
|
|
if (sqlDb.DBDataTableSelect(sQuery, CommandType.Text, (SqlParameter[])null, out dtTempReturn) == UserCom.OK)
|
|
{
|
|
if (dtTempReturn.Rows.Count == 1)
|
|
{
|
|
DataRow drTempReturn = dtTempReturn.Rows[0];
|
|
|
|
htReturn = MakeHappyOrderAutoOrderLogJsonData(drTempReturn);
|
|
}
|
|
}
|
|
|
|
dtReturn = dtTempReturn;
|
|
}
|
|
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 htReturn;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 전문 생성
|
|
/// </summary>
|
|
/// <param name="drData"></param>
|
|
/// <returns></returns>
|
|
private Hashtable MakeHappyOrderAutoOrderLogJsonData(DataRow drData)
|
|
{
|
|
Hashtable htData = new Hashtable();
|
|
|
|
try
|
|
{
|
|
/////////////////////////////////////////////////////////////////
|
|
/// 중요! 테이블 컬럼명 갯수와 명칭은 동일 해야함!
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
// 전문 생성
|
|
for (int iRow = 0; iRow < drData.Table.Columns.Count; iRow++)
|
|
{
|
|
if (drData.Table.Columns[iRow].ColumnName == "CMP_CD" ||
|
|
drData.Table.Columns[iRow].ColumnName == "SALE_DT" ||
|
|
drData.Table.Columns[iRow].ColumnName == "STOR_CD" ||
|
|
drData.Table.Columns[iRow].ColumnName == "POS_NO" ||
|
|
drData.Table.Columns[iRow].ColumnName == "ORDER_TYPE") continue;
|
|
|
|
htData.Add(drData.Table.Columns[iRow].ColumnName, drData[iRow].ToString());
|
|
}
|
|
|
|
}
|
|
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 htData;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 디비 업데이트
|
|
/// </summary>
|
|
/// <param name="sCmpCd"></param>
|
|
/// <param name="sSaleDt"></param>
|
|
/// <param name="sStorCd"></param>
|
|
/// <param name="sPosNo"></param>
|
|
/// <param name="sTradeNo"></param>
|
|
/// <returns></returns>
|
|
private int HappyOrderAutoOrderLogUpdate(string sCmpCd, string sSaleDt, string sStorCd, string sPosNo, string sOrderNo, string sStatus, string sSendFlag)
|
|
{
|
|
int iRet = UserCom.NG;
|
|
string sQuery = string.Empty;
|
|
try
|
|
{
|
|
if (sCmpCd.Trim() == "" || sSaleDt.Trim() == "" || sStorCd.Trim() == "" || sPosNo.Trim() == "" || sOrderNo.Trim() == "" || sStatus.Trim() == "") return iRet;
|
|
|
|
sQuery += "UPDATE POSLOG.dbo.TR_AUTOMATICSHIPMENT_LOG ";
|
|
sQuery += " SET SEND_YN = '" + sSendFlag + "' ";
|
|
sQuery += " , UPD_DATE = '" + DateTime.Now.ToString("yyyyMMddHHmmss") + "' ";
|
|
sQuery += " WHERE CMP_CD = '" + sCmpCd + "' ";
|
|
sQuery += " AND SALE_DT = '" + sSaleDt + "' ";
|
|
sQuery += " AND STOR_CD = '" + sStorCd + "' ";
|
|
sQuery += " AND POS_NO = '" + sPosNo + "' ";
|
|
sQuery += " AND ORDER_NO = '" + sOrderNo + "' ";
|
|
sQuery += " AND STATUS = '" + sStatus + "' ";
|
|
|
|
iRet = sqlDb.DBExecuteNonQuery(sQuery, CommandType.Text, (SqlParameter[])null);
|
|
}
|
|
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 iRet;
|
|
}
|
|
|
|
//#15945 해피오더 자동주문 상세기능 end
|
|
}
|
|
}
|