using System;
using System.Data;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Cosmos.Common;
using Cosmos.UserFrame;
using Cosmos.CommonManager;
using Cosmos.ServiceProvider;
namespace Cosmos.Service
{
class HoldDeal :SaleTranCallBase, IHoldDeal
{
private ISaleCompleteUs m_cSaleComplete = null; // 거래 완료처리
public HoldDeal()
{
m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE);
}
///
/// 보류 거래 조회
///
///
///
public DataTable SearchHoldDealList(string sSaleDate)
{
string sQuery = "";
int iMaxCnt = 100;
string sTimeCheck = "";
try
{
iMaxCnt = CmUtil.IntParse(PosMstManager.GetPosOption(POS_OPTION.OPT017));
if (iMaxCnt == 0)
{
sQuery = " SELECT ROW_NUMBER() OVER( ORDER BY HDR.REG_NO ASC) AS NO ";
}
else
{
sQuery = " SELECT TOP " + iMaxCnt + " ROW_NUMBER() OVER( ORDER BY HDR.REG_NO ASC) AS NO ";
}
sQuery += " ,(HDR.SYS_DT + HDR.PAY_TIME)SYS_DT ";
//sQuery += " ,(CASE WHEN CNT > 1 THEN ITEM_NM +' " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0171) + " '+ CONVERT(VARCHAR(100),CNT - 1) + '" + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0938) + "' ELSE ITM.ITEM_NM END)ITEM_NM ";
sQuery += " ,(CASE WHEN CNT > 1 THEN ITEM_NM +' " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0171) + " '";
sQuery += " +CONVERT(VARCHAR(100),CNT - 1) + '" + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0938) + "' ELSE ITM.ITEM_NM END)ITEM_NM ";
sQuery += " ,CONVERT(VARCHAR,HDR.NET_SALE_AMT)NET_SALE_AMT ";
sQuery += " ,CONVERT(VARCHAR,ITM.SALE_QTY)SALE_QTY ";
sQuery += " ,HDR.SALE_DT, HDR.POS_NO, HDR.REG_NO ";
sQuery += " FROM POSLOG.dbo.ETC_SALE_HEADER HDR ";
sQuery += " INNER JOIN (";
sQuery += " SELECT DTL.CMP_CD , DTL.SALE_DT , DTL.STOR_CD , DTL.POS_NO , DTL.REG_NO ";
sQuery += " , MAX(MST.SHTCUT_ITEMNM)ITEM_NM , COUNT(DTL.CMP_CD)CNT , SUM(DTL.SALE_QTY)SALE_QTY";
sQuery += " FROM POSLOG..ETC_SALE_DETAIL DTL ";
sQuery += " INNER JOIN POSMST..MST_ITEM MST ";
sQuery += " ON DTL.CMP_CD = MST.CMP_CD ";
sQuery += " AND DTL.STOR_CD = MST.STOR_CD ";
sQuery += " AND DTL.SUB_SHOP_CD = MST.SUB_STOR_CD ";
sQuery += " AND DTL.ITEM_PLU_CD = MST.ITEM_CD ";
sQuery += " GROUP BY DTL.CMP_CD, DTL.SALE_DT, DTL.STOR_CD, DTL.POS_NO, DTL.REG_NO ";
sQuery += " ) ITM ";
sQuery += " ON HDR.CMP_CD = ITM.CMP_CD ";
sQuery += " AND HDR.SALE_DT = ITM.SALE_DT ";
sQuery += " AND HDR.STOR_CD = ITM.STOR_CD ";
sQuery += " AND HDR.POS_NO = ITM.POS_NO ";
sQuery += " AND HDR.REG_NO = ITM.REG_NO ";
sQuery += " WHERE HDR.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
sQuery += " AND HDR.SALE_DT = '" + sSaleDate + "'";
sQuery += " AND HDR.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND HDR.TRADE_DIV = '" + ItemConst.TRAN_DIV.NORMAL + "'";
sQuery += " AND HDR.TRADE_KINDPER = '" + ItemConst.TRAN_KIND.LOG.HOLD_DEAL + "'";
sQuery += " AND HDR.TRADE_STAT = '0'";
sQuery += " AND HDR.TRAIN_MODE_YN = '" + m_cPosStatus.Base.TrainingFlag + "' ";
sTimeCheck = PosMstManager.GetPosOption(POS_OPTION.OPT018).ToString().Trim();
//경과 시간 구하기
if (sTimeCheck != "" && sTimeCheck != "0")
{
sQuery += " AND HDR.REG_DATE < '" + DateTime.Now.AddHours(CmUtil.IntParse(PosMstManager.GetPosOption(POS_OPTION.OPT018))).ToString("yyyyMMddHHmmss") + "'";
}
sQuery += " ORDER BY HDR.CMP_CD, HDR.SALE_DT, HDR.STOR_CD, HDR.POS_NO, HDR.REG_NO DESC";
return m_cMstService.Select(new string[] { sQuery });
}
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 null;
}
///
/// 보류 거래 영수증 조회
///
///
///
///
///
public DataTable SearchHoldDealPrint(string sSaleDate, string sPosNo, string sRegNo)
{
string sQuery = "";
try
{
sQuery = " SELECT JOURNAL_DATA ";
sQuery += " FROM POSLOG.dbo.ETC_SALE_JOURNAL ";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
sQuery += " AND SALE_DT = '" + sSaleDate + "'";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND POS_NO = '" + sPosNo + "'";
sQuery += " AND REG_NO = '" + sRegNo + "'";
return m_cMstService.Select(new string[] { sQuery });
}
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 null;
}
///
/// 보류 거래 상태 변경(삭제, 불러오기)
///
///
///
///
///
///
public int UpdateHoldDeal(string sSaleDate, string sPosNo, string sRegNo, string sStats, double dQty, double dSaleAmt)
{
string sQuery = "";
try
{
if (sStats == "2" && dSaleAmt > 0)
{
//로그 저장!
m_cSaleComplete.EtcHoldLogSvae(ItemConst.HOLD_STAT_CD.DELETE, sRegNo, dQty, dSaleAmt);
}
sQuery = " UPDATE ";
sQuery += " POSLOG..ETC_SALE_HEADER ";
sQuery += " SET TRADE_STAT ='" + sStats + "'";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
sQuery += " AND SALE_DT = '" + sSaleDate + "'";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND POS_NO ='" + sPosNo + "'";
sQuery += " AND REG_NO ='" + sRegNo + "'";
sQuery += " AND TRAIN_MODE_YN = '" + m_cPosStatus.Base.TrainingFlag + "' ";
return m_cMstService.Update(new string[] { sQuery });
}
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 -1;
}
///
/// 보류 영수증 출력
///
///
///
public bool PrintHoldDeal(string sPrtData)
{
//// 영수증 출력
return m_cSaleComplete.PosSaleRePrint(sPrtData);
}
///
/// 상품불러오기를 위한 거래 데이터 상품 정보 만 로딩
///
///
///
///
///
public bool LoadLocalTranPlu(string sSaleDate, string sPosNo, string sTradeNo)
{
bool bRet = false;
try
{
ArrayList alTrPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (alTrPluItem.Count > 0) // 거래호출시 데이터 있음(다시로딩 안함)
{
// 상품정보를 제외한 모든 정보 클리어
m_cDataService.InitTranHeader();
ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
alPayItem.Clear();
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
alPayItem.Clear();
ArrayList alTrCpiItem = (ArrayList)StateObject.GetItemObject(Column.TR_SALE_CPI_RSLT.ITEM);
alTrCpiItem.Clear();
ArrayList alTrGuest = (ArrayList)StateObject.GetItemObject(Column.TR_GUEST.ITEM);
alTrGuest.Clear();
return true;
}
m_cDataService.TranComplete();
// 상품정보 로딩
if (LoadLocalTrDetail(sSaleDate, sPosNo, sTradeNo, true) == false)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0248);
m_cDataService.TranComplete();
return bRet;
}
m_cTrnStatus.Head.FloorCd = m_cPosStatus.Sale.SelectFloorCd;
m_cTrnStatus.Head.FloorNm = m_cPosStatus.Sale.SelectFloorNm;
m_cTrnStatus.Head.TableNo = m_cPosStatus.Sale.SelectTableNo;
m_cTrnStatus.Head.TableNm = m_cPosStatus.Sale.SelectTableNm;
bRet = true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
m_cDataService.TranComplete();
}
return bRet;
}
//17.05.18 dkshin 쇼킹박스 추가
///
/// 쇼킹박스 거래 조회
///
///
///
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
//기존
//public DataTable SearchShockingBoxDealList(string sInputData)
//변경
public DataTable SearchShockingBoxDealList(string sInputData, string sTradeKind, string sTradeStat)
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
{
string sQuery = "";
try
{
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
//기존
//sQuery += "SELECT SALE_DT, POS_NO, REG_NO FROM POSLOG.dbo.ETC_SALE_HEADER ";
//변경
sQuery += "SELECT SALE_DT, POS_NO, REG_NO,TRADE_STAT, ORG_BILL_POSNO,ORG_BILLDT,ORG_BILL_NO FROM POSLOG.dbo.ETC_SALE_HEADER ";
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND SALE_DT + REG_NO = '" + sInputData + "'";
sQuery += " AND TRADE_DIV = '" + ItemConst.TRAN_DIV.NORMAL + "'";
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
//기존
//sQuery += " AND TRADE_KINDPER = '" + ItemConst.TRAN_KIND.LOG.SHOCKING_BOX + "'";
//sQuery += " AND TRADE_STAT = '0'";
//변경
sQuery += " AND TRADE_KINDPER = '" + sTradeKind + "'";
if (sTradeStat != "1")
{
sQuery += " AND TRADE_STAT = '0'";
}
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
sQuery += " AND TRAIN_MODE_YN = '" + m_cPosStatus.Base.TrainingFlag + "' ";
return m_cMstService.Select(new string[] { sQuery });
}
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 null;
}
//17.05.18 dkshin 쇼킹박스 추가
///
/// 쇼킹박스 거래 상태 변경
///
///
public int UpdateShockingBOX()
{
var sSQL = string.Empty;
string sQuery = "";
try
{
sQuery = "UPDATE POSLOG..ETC_SALE_HEADER ";
sQuery += "SET TRADE_STAT = '0' ";
sQuery += "WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND POS_NO = '{2}' AND SALE_DT + REG_NO = '{3}'";
sSQL = string.Format(sQuery, m_cTrnStatus.Head.CmpCd, m_cTrnStatus.Head.StoreCd, m_cTrnStatus.Head.PosNo, m_cTrnStatus.Head.ShockingBoxBarcodeData);
return m_cMstService.Update(new string[] { sSQL });
}
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 -1;
}
//17.05.18 dkshin 쇼킹박스 추가
///
/// 쇼킹박스 거래 조회
///
///
///
public DataTable SearchShockingBoxPayCompleteList(string sSaleDate, string sTradeNo)
{
string sQuery = "";
try
{
sQuery += "SELECT SALE_DT, POS_NO, REG_NO FROM POSLOG.dbo.ETC_SALE_HEADER ";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND SALE_DT = '" + sSaleDate + "'";
sQuery += " AND ORG_BILL_NO = '" + sTradeNo + "'";
sQuery += " AND TRADE_KINDPER = '" + ItemConst.TRAN_KIND.LOG.SHOCKING_BOX + "'";
sQuery += " AND TRADE_STAT = '1' ";
return m_cMstService.Select(new string[] { sQuery });
}
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 null;
}
//17.05.18 dkshin 쇼킹박스 추가
///
/// 쇼킹박스 거래 상태 변경
///
///
public int UpdateShockingBOXPayComplete(string sSaleDate, string sPosNo, string sTradeNo)
{
var sSQL = string.Empty;
string sQuery = "";
try
{
sQuery = "UPDATE POSLOG..ETC_SALE_HEADER ";
sQuery += " SET TRADE_STAT = '0', ORG_BILL_POSNO = '', ORG_BILLDT = '', ORG_BILL_NO = '' ";
sQuery += " WHERE CMP_CD = '{0}' AND STOR_CD = '{1}' AND POS_NO = '{2}' AND SALE_DT + REG_NO = '{3}' ";
sQuery += " AND TRADE_KINDPER = '" + ItemConst.TRAN_KIND.LOG.SHOCKING_BOX + "'";
sQuery += " AND TRADE_STAT = '1'";
sSQL = string.Format(sQuery, m_cPosStatus.Base.CmpCd, m_cPosStatus.Base.StoreNo, sPosNo, sSaleDate+sTradeNo);
return m_cMstService.Update(new string[] { sSQL });
}
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 -1;
}
}
}