using System;
using System.Collections;
using System.IO;
using Cosmos.UserFrame;
using Cosmos.BaseFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using System.Data;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 영수증 출력 처리
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
class PosReceiptBase
{
protected SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
protected StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
protected PosStatus m_cPosStatus; // 기본정보 참조
protected TranStatus m_cTrnStatus; // 거래정보 참조
protected DeviceStatus m_cDevStatus; // 장비정보 참고
protected IPosPrinterUs m_cPosPrinter = null;
protected IDatabaseSQL m_cSqlDbService = null; // 데이터베이스 관리
protected IMasterUs m_cMstService = null; // 마스터 인터페이스
//private MakeTranLog m_cTranService = null;
private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스
protected static ArrayList m_aPrintBuf = new ArrayList();
///
/// 출력데이터(0:RECEIPT:본영수증)
///
protected static ArrayList m_aRecPrintBuf = new ArrayList();
///
/// 출력데이터(9:NOJNL:부가영수증(저널 대상아님))
///
protected static ArrayList m_aEtcPrintBuf = new ArrayList();
///
/// 영수증 메시지 마스터 정보
///
protected DataTable m_dtMstBillMsg = null;
///
/// 영수증 유형 마스터 정보
///
protected DataTable m_dtMstBillType = null;
///
/// 설문참여 메시지 마스터 정보
///
protected DataTable m_dtMstVoteMsg = null;
///
/// 정렬구분('0':오른쪽, '1':가운데, '2':왼쪽)
///
protected string m_sPaySortDiv;
///
/// 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대)
///
protected string m_sPaySizeDiv;
//grayber@20180226 대기번호표 개선 start - 구분 추가
///
/// 전자영수증 구분
///
protected bool m_bElectRec = false;
//grayber@20180226 대기번호표 개선 end
public PosReceiptBase()
{
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보
m_cDevStatus = (DeviceStatus)StateObject.DEVICE; // POS 장치정보
m_cPosPrinter = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER);
m_cSqlDbService = (IDatabaseSQL)sManager.InitServiceInstance(ServiceLists.AGENT_DATABASE.DLL, ServiceLists.AGENT_DATABASE.DATABASE_MSSQL);
m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER);
//m_cTranService = (MakeTranLog)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.MAKE_TRANLOG);
m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
}
///
/// 영수증 버퍼 초기화
///
///
public void PrintBufClear()
{
m_aPrintBuf.Clear();
m_aRecPrintBuf.Clear();
m_aEtcPrintBuf.Clear();
}
///
/// 영수증 상단 영역 출력
///
/// 0:본영수증, 9:기타영수증
/// 상단이미지 출력여부
/// 명판 출력여부
/// 상단메시지 출력여부
/// 일자시간 출력여부
///
protected bool SetTopPosPrintData(string sPrtID, bool bTopImg, bool bStamp, bool bTopMsg, bool bTopInfo)
{
return SetTopPosPrintData(sPrtID, bTopImg, bStamp, bTopMsg, bTopInfo, "");
}
protected bool SetTopPosPrintData(string sPrtID, bool bTopImg, bool bStamp, bool bTopMsg, bool bTopInfo, string sTitleName)
{
return SetTopPosPrintData(sPrtID, bTopImg, bStamp, bTopMsg, bTopInfo, sTitleName, false);
}
protected bool SetTopPosPrintData(string sPrtID, bool bTopImg, bool bStamp, bool bTopMsg, bool bTopInfo, string sTitleName, bool bDisplay)
{
try
{
// 상단 이미지 출력
if (bTopImg == true && PosMstManager.GetPosOption(POS_OPTION.OPT409) != "0" && m_cPosStatus.Base.TextLogoMsgUseYn != "1") AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_TBM);
// 상단 텍스트로고 출력
if (m_cPosStatus.Base.TextLogoMsgUseYn == "1") SetTextLogoMsg(sPrtID);
// 주문(대기)번호 출력!
if (bTopMsg == true)
{
#region
//#20170913 TO STAY, TO GO 정보 영수증 출력 start
string sPackTradeNm = "";
if (m_cTrnStatus.Head.PackTradeDiv != "")
{
#region
if (m_cTrnStatus.Head.PackTradeDiv == "1")
{
sPackTradeNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1003);
}
else if (m_cTrnStatus.Head.PackTradeDiv == "2")
{
sPackTradeNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1004);
}
else if (m_cTrnStatus.Head.PackTradeDiv == "3")
{
sPackTradeNm = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1005);
}
#endregion
//AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, sPackTradeNm);
}
//#20170913 TO STAY, TO GO 정보 영수증 출력 end
if (PosMstManager.GetPosOption(POS_OPTION.OPT008) == "1" && m_cTrnStatus.Head.OrderNo != "")
{
#region
if (m_cTrnStatus.Head.IsBellUse.Equals("1"))
{
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, "진동벨번호");
}
else
{
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097));
}
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BIG, PosConst.PRT_FMT.F103, m_cTrnStatus.Head.OrderNo);
//#20170913 TO STAY, TO GO 정보 영수증 출력 start
if (sPackTradeNm != "")
{
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, sPackTradeNm);
}
//#20170913 TO STAY, TO GO 정보 영수증 출력 end
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
#endregion
}
else if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE)
{
#region
// Add, 2017.03.14 => 후불-판매모드 일때는 영수증에 주문번호를 무조건 출력 한다.
var temp = string.IsNullOrWhiteSpace(m_cTrnStatus.Head.OrderNo) ? m_cTrnStatus.Head.TradeNo : m_cTrnStatus.Head.OrderNo;
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097) + ":" + temp);
//#20170913 TO STAY, TO GO 정보 영수증 출력 start
if (sPackTradeNm != "")
{
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, sPackTradeNm);
}
//#20170913 TO STAY, TO GO 정보 영수증 출력 end
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
#endregion
}
#endregion
}
// 명판 출력
if (bStamp == true) SetStampGuidePrintData(sPrtID, PosConst.BILL_PRT_LOC.STAMP);
// 상단메시지 출력
if (bTopMsg == true)
{
if (PosMstManager.GetPosOption(POS_OPTION.OPT411) != "0") SetStampGuidePrintData(sPrtID, PosConst.BILL_PRT_LOC.TOP);
////주문(대기)번호 출력!
//if (PosMstManager.GetPosOption(POS_OPTION.OPT008) == "1" && m_cTrnStatus.Head.OrderNo != "")
//{
// AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0097) + ":" + m_cTrnStatus.Head.OrderNo);
//}
}
// 연습모드이면 연습모드 여부 출력
if (m_cPosStatus.Base.TrainingFlag == ItemConst.TRAINING_FLAG.TRAINING_YES) AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0033));
#region
//// 현금 영수증 타이틀 출력
//ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
//foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
//{
// if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
// if (cEtcItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue;
// if (cEtcItem.ETC_WAY_CD != ItemConst.TR_ITEM_ID.ETC_INFO_ITEM || cEtcItem.ETC_DTL_CD_01 != ItemConst.TR_ITEM_ID.ETC_INFO.CASHBILL) continue;
// // 소득공제, 지출증빙 타이틀 출력
// AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_HOR, PosConst.PRT_FMT.F103
// , (cEtcItem.OCCUR_ENTRY_11 == "0" ? MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0041) : MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0042)));
//}
#endregion
// 반품 타이틀 출력
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND)
{
AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_HOR, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0002));
}
// grayber@20180110 전자영수증 주문(대기)번호표 출력 start - 영수증 출력 : 대기번호표 타이틀 출력
// 개별 타이틀 정보 출력
// 기존
//if (sTitleName != "") AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_HOR, PosConst.PRT_FMT.F103, sTitleName);
// 변경
if (sTitleName != "" &&
//grayber@20180226 대기번호표 조건 변경 start - 조건 단순화
// 기존
//PosMstManager.GetPosOption(POS_OPTION.OPT429).Trim().Equals("1") // 전자영수증 발행 여부
//&& PosMstManager.GetPosOption(POS_OPTION.OPT008).Trim().Equals("1") // 대기(주문) 번호 사용여부
//&& m_cTrnStatus.Head.OrderNo.Trim().Equals("") != true // 주문번호가 있으면
//&& m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND // 반품이 아닐때
//// grayber@20180122 전자영수증 조건 추가 start - 해피앱 전자영수증 사용 여부 확인
//&& CheckElectronic_Receipt().Equals("Y") == true // 전자영수증 확인
//// grayber@20180122 전자영수증 조건 추가 end
// 변경
m_bElectRec == true && m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND
//grayber@20180226 대기번호표 조건 변경 end
)
{
AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_BGB, PosConst.PRT_FMT.F103, sTitleName);
AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, " "); // 공백 추가
}
else
{
if (sTitleName.Trim().Equals("") != true) AddPrintData(sPrtID, bDisplay == true ? PosConst.PRT_HDR.PRT_NOR : PosConst.PRT_HDR.PRT_HOR, PosConst.PRT_FMT.F103, sTitleName);
}
// grayber@20180110 전자영수증 주문(대기)번호표 출력 end
if (bTopInfo == true)
{
#region
if (PosMstManager.GetPosOption(POS_OPTION.OPT401) == "1")
{
// 2019-04-16 - 1997fx11 : 판매일자 및 POS번호, 캐셔이름
SetBillTypeTopBtmPrintData(sPrtID, PosConst.BILL_TYPE_DIV.TOP_INFO);
}
else
{
string sCashierName = m_cPosStatus.Base.CashierName; // 판매원명
//#20171107 통제관리 start, phj
//기존
//if (m_cTrnStatus.Head.CashierId != m_cPosStatus.Base.CashierNo) sCashierName = GetCashierName(m_cTrnStatus.Head.CashierId);
//변경
if (m_cTrnStatus.Head.CashierId != m_cPosStatus.Base.CashierNo)
{
if ((m_cTrnStatus.Head.CashierId.Length) > 3)
{
sCashierName = GetCashierName(m_cTrnStatus.Head.CashierId.Substring(m_cTrnStatus.Head.StoreCd.Length, 3));
}
else
{
if (m_cTrnStatus.Head.CashierId != m_cPosStatus.Base.CashierNo) sCashierName = GetCashierName(m_cTrnStatus.Head.CashierId);
}
}
//#20171107 통제관리 end, phj
// 거래구분,일자,시간, POS번호,캐셔명
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR,
(m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND ? MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0002) : MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0001))
+ " " + m_cPosStatus.Global.DateToCulture(m_cTrnStatus.Head.SysYmd) + " " + CmUtil.StrToTime(m_cTrnStatus.Head.PayHms) + " POS:" + m_cTrnStatus.Head.PosNo + "(" + CmUtil.LeftH(sCashierName, 6) + ")");
}
#endregion
}
return 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);
}
return false;
}
///
/// 영수증 하단 영역 출력
///
/// 0:본영수증, 9:기타영수증
/// 하단이미지 출력여부
/// 하단메시지 출력여부
/// 하단정보 출력여부
/// 영수증바코드 출력여부
/// 추가메시지 출력여부
///
protected bool SetBtmPosPrintData(string sPrtID, bool bBtmImg, bool bBtmMsg, bool bBtmInfo, bool bBarCode, bool bAddMsg)
{
return SetBtmPosPrintData(sPrtID, bBtmImg, bBtmMsg, bBtmInfo, bBarCode, bAddMsg, 1);
}
protected bool SetBtmPosPrintData(string sPrtID, bool bBtmImg, bool bBtmMsg, bool bBtmInfo, bool bBarCode, bool bAddMsg, int iPrintCnt)
{
string sPrintMsg = "";
try
{
if (m_cPosStatus.Base.TrainingFlag == ItemConst.TRAINING_FLAG.TRAINING_YES)
{
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F103, MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0035));
}
// 하단 메시지 출력
if (bBtmMsg == true && PosMstManager.GetPosOption(POS_OPTION.OPT412) != "0") SetStampGuidePrintData(sPrtID, PosConst.BILL_PRT_LOC.BOTTOM);
//grayber@20171214 캠페인 리펀드 쿠폰 start
// 캠페인 리펀드 출력
if (PosMstManager.GetPosOption(POS_OPTION.OPT431).Equals("1") == true && bAddMsg == true)
{
SetCpiRefundPrint(sPrtID);
}
//grayber@20171214 캠페인 리펀드 쿠폰 end
// 하단정보
if (bBtmInfo == true && PosMstManager.GetPosOption(POS_OPTION.OPT401) == "1")
{
SetBillTypeTopBtmPrintData(sPrtID, PosConst.BILL_TYPE_DIV.BTM_INFO);
}
//grayber@20171214 캠페인 리펀드 쿠폰 start
// 해피앱 추후 적립 bBarCode 구분자 추가하여 주석 해제
// 바코드가 출력시에 출력되도록 처리
if (bBarCode == true)
{
//#20170807 명판 캠페인 커팅 start
//#해피앱 추후적립 start, sskim
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR)
{
//#20180509 해피앱 추후적립 사용여부 옵션 처리 start
//기존
//if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL)
//변경
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL &&
PosMstManager.GetPosOption(POS_OPTION.OPT515) == "1") // 해피앱 추후적립 사용 여부(0:사용안함, 1:사용함)
//#20180509 해피앱 추후적립 사용여부 옵션 처리 end
{
//#17470 패션파이브 영수증 메시지 수정 요청 start
//기존
//SetHpAppAfterSavePrint(sPrtID); // 해피앱 추후적립 문구 출력
//변경
//패션5, 라뜰리에 영업조직은 해피앱 추후적립 문구 미출력
if (m_cPosStatus.Base.BrandCd != "009" && m_cPosStatus.Base.BrandCd != "021")
{
SetHpAppAfterSavePrint(sPrtID); // 해피앱 추후적립 문구 출력
}
//#17470 패션파이브 영수증 메시지 수정 요청 end
}
}
//#해피앱 추후적립 end, sskim
//#20170807 명판 캠페인 커팅 end
}
//grayber@20171214 캠페인 리펀드 쿠폰 end
// 바코드 출력
if (bBarCode == true && PosMstManager.GetPosOption(POS_OPTION.OPT403) != "0" && m_cPosStatus.Sale.DutchPayFlg != "2") // && m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL)
{
//2017-06-02 dkshin 해피앱 추후적립 - 영수증 바코드 포맷 변경
//string sBarData = m_cTrnStatus.Head.SaleDate + m_cTrnStatus.Head.PosNo + m_cTrnStatus.Head.PayHms;
//AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BA1, sBarData);
string sBarData = "";
if (m_cTrnStatus.Head.CmpCd == "PCKR")
{
sBarData = "4";
}
else if (m_cTrnStatus.Head.CmpCd == "BRKR")
{
sBarData = "5";
}
else if (m_cTrnStatus.Head.CmpCd == "SLKR")
{
sBarData = "6";
}
//2017.11.01;중국은 7, 그 외 지역은 BarData 자리 수를 마추기 위해 9 로 추가함;girak.kim; Start
else if (m_cTrnStatus.Head.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCCN))
{
sBarData = "7";
}
else if (m_cTrnStatus.Head.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS))
{
sBarData = "8";
}
else
{
sBarData = "9";
}
//2017.11.01;그 외 지역은 BarData 자리 수를 마추기 위해 9 로 추가함;girak.kim; End
sBarData += m_cTrnStatus.Head.TradeNo.ToString().Substring(4, 1); //빌5
sBarData += m_cTrnStatus.Head.PosNo.ToString().Substring(0, 1); //P1
sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(0, 1); //년1
sBarData += m_cTrnStatus.Head.TradeNo.ToString().Substring(3, 1); //빌4
sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(1, 1); //년2
sBarData += m_cTrnStatus.Head.PosNo.ToString().Substring(1, 1); //P2
sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(2, 1); //년3
//sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(2, 1); //점3
sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(m_cTrnStatus.Head.StoreCd.Length - 5, 1); //점3
sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(3, 1); //년4
//sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(3, 1); //점4
sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(m_cTrnStatus.Head.StoreCd.Length - 4, 1); //점4
sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(4, 1); //월1
sBarData += m_cTrnStatus.Head.TradeNo.ToString().Substring(2, 1); //빌3
sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(5, 1); //월2
//sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(4, 1); //점5
sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(m_cTrnStatus.Head.StoreCd.Length - 3, 1); //점5
sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(6, 1); //일1
sBarData += m_cTrnStatus.Head.TradeNo.ToString().Substring(1, 1); //빌2
sBarData += m_cTrnStatus.Head.SaleDate.ToString().Substring(7, 1); //일2
//sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(5, 1); //점6
sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(m_cTrnStatus.Head.StoreCd.Length - 2, 1); //점6
//sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(6, 1); //점7
sBarData += m_cTrnStatus.Head.StoreCd.ToString().Substring(m_cTrnStatus.Head.StoreCd.Length - 1, 1); //점7
//#15456 영수증 바코드 번호표기 start
//기존
//AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BA1, sBarData);
//변경
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BAR, sBarData);
//#15456 영수증 바코드 번호표기 end
m_cTrnStatus.Head.RcptBarcodeData = sBarData;
m_cPosStatus.Base.LastRcptBarcodeData = sBarData;
}
// 하단 고객용/보관용 명칭 출력
if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.NORMAL.DELIMITER) == true
|| m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.UNDECIDED.DELIMITER) == true
|| m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.FORIGN.DELIMITER) == true
|| m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.AFTER.DELIMITER) == true
|| m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.CHARGESALE.DELIMITER) == true)
{
if (iPrintCnt == 1)
{
sPrintMsg = CmUtil.MidH(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0136), 0, 42).Trim(); // 고객용
}
else //if (iPrintCnt == 2)
{
sPrintMsg = CmUtil.MidH(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0123), 0, 42).Trim(); // 보관용
}
}
else
{
sPrintMsg = CmUtil.MidH(MessageManager.GetPrintMessage(POS_MESSAGE.PRINT.MSG_0123), 0, 42).Trim(); // 보관용
}
if (sPrintMsg != "") AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_HOR, PosConst.PRT_FMT.F103, "[" + sPrintMsg + "]");
// 추가 메시지 출력
if (bAddMsg == true)
{
SetCampaignPrint(sPrtID); // 영수캠페인(포함) 데이터 출력
SetVotePrintData(sPrtID); // 설문참여 메시지
}
// #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 Start, lsr
//grayber@20180202 [BR]해피오더 고객정보 추가 + 원산지 표기 start - [BR] 분리
//if ( m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) != true )
//{
//if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.FORIGN.O2O)
// 해피오더 영양정보 출력
if (m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) != true && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.FORIGN.O2O)
// #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 End, lsr
{
// 결제 내역 받아 오기
ArrayList aPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
// 해피오더 주문번호 가져 오기
Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)aPayItem[0];
string sOrderNum = cPayItem.OCCUR_ENTRY_01;
string sOrderDt = cPayItem.OCCUR_ENTRY_03;
// 해피오더 영양정보 조회
IHappyOrderList cHappyOrder = (IHappyOrderList)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HAPPY_ORDER_LIST);
DataTable dtReturn = cHappyOrder.GetHappyOrderData(sOrderNum, sOrderDt);
if (dtReturn != null && dtReturn.Rows.Count > 0)
{
DataRow drData = dtReturn.Rows[0];
string sNutritionMsg = CmUtil.GetDataRowStr(drData, "NUTRITION_MSG");
//#17141 [해피오더]배달영수증 주소 추가 start
string sHappyOrderDeliveryInfo = CmUtil.GetDataRowStr(drData, "FILLER5");
//#17141 [해피오더]배달영수증 주소 추가 end
//#17141 [해피오더]배달영수증 주소 추가 start
if (sNutritionMsg != "" || sHappyOrderDeliveryInfo != "")
{
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
}
if (sNutritionMsg != "")
{
//#17141 [해피오더]배달영수증 주소 추가 end
//#20180323 해피오더 영수증 재발행시 원산지 정보 출력 기능 수정 start
//주문서 출력시 원산지 정보 출력, 재발행시 원산지 정보 미출력되도록 수정
//기존
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, sNutritionMsg);
//변경
//AddPrintData(PosConst.PRT_ITEM.REC_TEMP, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, sNutritionMsg);
//#20180323 해피오더 영수증 재발행시 원산지 정보 출력 기능 수정 end
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
//#17141 [해피오더]배달영수증 주소 추가 start
}
if (sHappyOrderDeliveryInfo != "")
{
string[] DeliveryDataList = null;
DeliveryDataList = sHappyOrderDeliveryInfo.Split(new string[] { "#~" }, StringSplitOptions.None);
if (DeliveryDataList != null)
{
//#17533 해피오더)영수증/주문서 전화번호 항목 추가 start
string sRecviver = "";
string sRecviverAddress = "";
string sReceiverHp = "";
//#17533 해피오더)영수증/주문서 전화번호 항목 추가 end
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " [배송지 정보]");
//고객명
if (DeliveryDataList[0] != "")
{
sRecviver = string.Format("{0}{1}{2}", CmUtil.LeftH(DeliveryDataList[0], 2), ((DeliveryDataList[0].Length > 2) ? new string('*', DeliveryDataList[0].Length - 2) : "*"), CmUtil.RightH(DeliveryDataList[0], 2));
}
//주소지
if (DeliveryDataList[1] != "")
{
sRecviverAddress = DeliveryDataList[1].Trim();
}
//#17533 해피오더)영수증/주문서 전화번호 항목 추가 start
//연락처
if (DeliveryDataList[2] != "")
{
//#17673 PB 안산본오우성 - 해피오더창에서 배달중 누르면 [고객센터로 연락주세요] 팝업 발생 start
//기존
//sReceiverHp = sReceiverHp.Substring(sReceiverHp.Length - 4, 4);
//변경
sReceiverHp = DeliveryDataList[2].Substring(DeliveryDataList[2].Length - 4, 4);
//#17673 PB 안산본오우성 - 해피오더창에서 배달중 누르면 [고객센터로 연락주세요] 팝업 발생 end
}
//#17533 해피오더)영수증/주문서 전화번호 항목 추가 end
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1189) + " : " + sRecviver);
//#17533 해피오더)영수증/주문서 전화번호 항목 추가 start
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0952) + " : " + sReceiverHp);
//#17533 해피오더)영수증/주문서 전화번호 항목 추가 end
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " " + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1087) + " : " + sRecviverAddress);
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
}
}
//#17141 [해피오더]배달영수증 주소 추가 end
}
}
else // 배달결제 영양정보 출력
{
// 결제 내역 받아 오기
ArrayList alTrPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
foreach (Column.TR_PAYMENT.DATA cPayItem in alTrPayItem)
{
// #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 Start, lsr
//if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.ORDER_ITEM &&
// (cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.ORDER.CALLCENTER_PAY || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.ORDER.BAEMIN_PAY))
// 배달(콜센터)결제 또는 배달의민족 또는 요기요배달 결제일 경우에 영양정보 & 열량정보 출력
if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.ORDER_ITEM &&
(cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.ORDER.CALLCENTER_PAY || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.ORDER.BAEMIN_PAY || cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.ORDER.YOGIYO_PAY)
// grayber@20180213 배달결제 영양정보 출력 거래구분 추가 정상일때만 출력하도록 처리 start
// 추가
&& m_cTrnStatus.Head.TradeDiv.Equals(ItemConst.TRAN_DIV.NORMAL) == true // 정상 거래 건
// grayber@20180213 배달결제 영양정보 출력 거래구분 추가 정상일때만 출력하도록 처리 end
)
// #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 End, lsr
{
// 상품 내역 받아 오기
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
int nCnt = 0;
string sItemInfo = "";
foreach (Column.TR_PLU.DATA cPluItem in alPluItem)
{
DataTable dtData = m_cDataCommon.SearchItemCode(cPluItem.SUB_SHOP_CD, cPluItem.ITEM_PLU_CD, "");
if (dtData == null || dtData.Rows.Count == 0) continue;
DataRow dr = dtData.Rows[0];
// 상품의 영양정보와 열량정보가 존재하지 않으면 Skip 처리
if (CmUtil.StringNullEmpty(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.ITEM_INFO)) == "" &&
CmUtil.StringNullEmpty(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.CALORY_INFO)) == "")
{
continue;
}
// grayber@20180213 배달결제 영양정보 출력 양식 변경, 상품명 및 캐리지리턴 추가 start
// 기존
//if (nCnt > 0)
//{
// sItemInfo += "/";
//}
//sItemInfo += CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.ITEM_INFO) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.CALORY_INFO);
// 변경
sItemInfo += "- 상품명 : " + cPluItem.ITEM_NAME + "\r\n";
sItemInfo += CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.ITEM_INFO) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.CALORY_INFO) + "\r\n\r\n";
// grayber@20180213 배달결제 영양정보 출력 양식 변경, 상품명 및 캐리지리턴 추가 end
nCnt++;
}
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, sItemInfo);
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
break;
}
}
}
// #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 Start, lsr
//}
//grayber@20180202 [BR]해피오더 고객정보 추가 + 원산지 표기 end
// #20180206 [BR]MST_ITEM 원산지 정보 결제완료 시 콜센터배달 결제, 배달의민족, 요기요 배달 결제일 때만 표기되도록 수정 End, lsr
// 하단이미지 출력
if (bBtmImg == true && PosMstManager.GetPosOption(POS_OPTION.OPT410) != "0") AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BBM);
return 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);
}
return false;
}
#region 영수 캠페인(포함) 출력 데이터 설정
///
/// 영수 캠페인(포함) 출력 데이터 설정
///
///
///
private bool SetCampaignPrint(string sPrtID)
{
try
{
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) return true;
// 영수 캠페인 출력 데이터 설정
ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
ArrayList alPrtBuf = cCampaingMain.GetCampaignPrintData(new string[] { });
if (alPrtBuf == null || alPrtBuf.Count <= 0) return true;
//AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
foreach (string sPrtData in alPrtBuf)
{
AddPrintData(sPrtID, sPrtData);
}
return 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);
}
return false;
}
#endregion
///
/// 영수증 상단 텍스트로고 데이터 생성
///
///
///
protected bool SetTextLogoMsg(string sPrtID)
{
try
{
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, m_cPosStatus.Base.TextLogoMsg1);
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_VER, PosConst.PRT_FMT.F103, m_cPosStatus.Base.TextLogoMsg2);
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR);
return 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);
}
return false;
}
///
/// 영수증 출력 완료(커팅) 데이터 생성
///
///
///
protected bool SetEndPosPrintData(string sPrtID)
{
try
{
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR);
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_CUT, ""); // 영수증 커팅
return 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);
}
return false;
}
///
/// 상품(정상상품) 출력 데이터 생성
///
///
///
///
///
///
///
///
///
///
protected bool SetPluItemPrintData(string sPrtID, string sPRT_HDR, string sItemName, double nSalePrc, long nSaleQty, double nDcAmt, string sSaleAmt, string sTaxCd)
{
try
{
// 영수증 제품명 두줄 출력(1 : 1줄 출력, 2 : 2줄 출력)
if (PosMstManager.GetPosOption(POS_OPTION.OPT414) == "2" && m_cPosStatus.Mst.CntryDiv != ItemConst.CNTRY_DIV.FR) // 프랑스는 두줄출력 안함!
{
// 상품명
AddPrintData(sPrtID, sPRT_HDR, sItemName);
// 상품 단가 출력(0 : 미 출력, 1 : 출력) 두줄출력일때만 가능
string sSalePrc = (PosMstManager.GetPosOption(POS_OPTION.OPT415) == "1") ? m_cPosStatus.Global.NumericTOCurrency(nSalePrc) : "";
// 단가, 수량, 금액
AddPrintData(sPrtID, sPRT_HDR, PosConst.PRT_FMT.F300, sSalePrc, nSaleQty.ToString(), sSaleAmt);
}
else
{
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.FR)
{
// 수량, 상품명, 단가, 금액, 세금구분
AddPrintData(sPrtID, sPRT_HDR, PosConst.PRT_FMT.F501, sItemName, nSaleQty.ToString(),
m_cPosStatus.Global.NumericTOCurrency(nSalePrc), sSaleAmt, sTaxCd);
}
else
{
// grayber@20180110 전자영수증 주문(대기)번호표 출력 start - 영수증 출력 : 제품명 , 수량 출력
// 기존
// 상품명, 수량, 금액
//AddPrintData(sPrtID, sPRT_HDR, PosConst.PRT_FMT.F301, sItemName, nSaleQty.ToString(), sSaleAmt);
// 변경
if (
//grayber@20180226 대기번호표 조건 변경 start - 조건 단순화
// 기존
//PosMstManager.GetPosOption(POS_OPTION.OPT429).Trim().Equals("1") // 전자영수증 사용 유무
//&& PosMstManager.GetPosOption(POS_OPTION.OPT008).Trim().Equals("1") // 대기(주문) 번호 사용여부
//&& m_cTrnStatus.Head.OrderNo.Trim().Equals("") != true // 주문번호가 있으면
//&& m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND // 반품이 아닐때
//// grayber@20180122 전자영수증 조건 추가 start - 해피앱 전자영수증 사용 여부 확인
//&& CheckElectronic_Receipt().Equals("Y") == true // 전자영수증 확인
//// grayber@20180122 전자영수증 조건 추가 end
// 변경
m_bElectRec == true && m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND
//grayber@20180226 대기번호표 조건 변경 end
)
{
// 제품명 , 수량
AddPrintData(sPrtID, sPRT_HDR, PosConst.PRT_FMT.F200, sItemName, nSaleQty.ToString());
return true;
}
else
{
// 상품명, 수량, 금액
AddPrintData(sPrtID, sPRT_HDR, PosConst.PRT_FMT.F301, sItemName, nSaleQty.ToString(), sSaleAmt);
}
// grayber@20180110 전자영수증 주문(대기)번호표 출력 end
}
}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "Exception : " + ex.Message);
}
return false;
}
///
/// 영수증 출력 처리
///
/// 본영수증출력여부
/// 기타 출력여부
///
public bool PrintExecute(bool bRecPrt, bool bEtcPrt, bool bSaveFile)
{
bool bRet = false;
try
{
string CRLF = "\r\n";
if (bSaveFile == true)
{
// 최종 영수증데이터 저장
//WriteReceiptFile("PRT_REC.TXT", m_aPrintBuf, "");
WriteReceiptFile("PRT_REC.TXT", m_aRecPrintBuf, PosConst.PRT_ITEM.REC);
//WriteReceiptFile("PRT_ETC.TXT", m_aEtcPrintBuf, PosConst.PRT_ITEM.ETC);
}
if (m_cPosStatus.Base.OlePosPrinterModel == "" || m_cPosStatus.Base.OlePosPrinterModel == "99")
{
#region
string sPrtData = "";
frmPrtData fPrtData = new frmPrtData();
sPrtData = "";
for (int i = 0; i < m_aPrintBuf.Count; i++)
{
sPrtData += m_aPrintBuf[i].ToString().Substring(1) + PosConst.CRLF;
}
fPrtData.txtPrtData.Text = sPrtData;
sPrtData = "";
for (int i = 0; i < m_aRecPrintBuf.Count; i++)
{
sPrtData += m_aRecPrintBuf[i].ToString().Substring(1) + PosConst.CRLF;
}
fPrtData.txtRecPrtData.Text = sPrtData;
sPrtData = "";
for (int i = 0; i < m_aEtcPrintBuf.Count; i++)
{
sPrtData += m_aEtcPrintBuf[i].ToString().Substring(1) + PosConst.CRLF;
}
fPrtData.txtEtcPrtData.Text = sPrtData;
sPrtData = "";
// 캠페인 정보
ArrayList alTrCpiItem = (ArrayList)StateObject.GetItemObject(Column.TR_SALE_CPI_RSLT.ITEM);
foreach (Column.TR_SALE_CPI_RSLT.DATA cTrPluCpi in alTrCpiItem)
{
if (cTrPluCpi.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
sPrtData += CmUtil.RPadH(cTrPluCpi.CPI_CD, 8) + CmUtil.RPadH(cTrPluCpi.ITEM_PLU_CD, 14)
+ CmUtil.LPadH(cTrPluCpi.DC_QTY.ToString(), 5) + CmUtil.LPadH(cTrPluCpi.DC_SUM_AMT.ToString(), 12) + CmUtil.LPadH(cTrPluCpi.ACCUM_POINT.ToString(), 12) + PosConst.CRLF;
}
fPrtData.txtCampaign.Text = sPrtData;
fPrtData.ShowDialog();
#endregion
return true;
}
// 영수증 출력버퍼 배열 사이즈 계산
int nPrtBufSize = 0;
if (bRecPrt == true && m_aRecPrintBuf.Count > 0) nPrtBufSize += m_aRecPrintBuf.Count;
if (bEtcPrt == true && m_aEtcPrintBuf.Count > 0) nPrtBufSize += m_aEtcPrintBuf.Count;
string[] aPrtBuf = new string[nPrtBufSize];
// 영수증 출력
int nRow = 0;
for (int i = 0; i < m_aPrintBuf.Count; i++)
{
if (bRecPrt == true
&& (m_aPrintBuf[i].ToString().StartsWith(PosConst.PRT_ITEM.REC) == true || m_aPrintBuf[i].ToString().StartsWith(PosConst.PRT_ITEM.REC_TEMP) == true))
{
aPrtBuf[nRow] = m_aPrintBuf[i].ToString().Substring(1).TrimEnd();
nRow++;
}
else if (bEtcPrt == true && m_aPrintBuf[i].ToString().StartsWith(PosConst.PRT_ITEM.ETC) == true)
{
aPrtBuf[nRow] = m_aPrintBuf[i].ToString().Substring(1).TrimEnd();
nRow++;
}
}
#region
//int nRow = 0;
//if (bRecPrt == true && m_aRecPrintBuf.Count > 0)
//{
// // 본영수증 출력
// for (int i = 0; i < m_aRecPrintBuf.Count; i++, nRow++)
// {
// aPrtBuf[nRow] = m_aRecPrintBuf[i].ToString().Substring(1).TrimEnd();
// }
//}
//if (bEtcPrt == true && m_aEtcPrintBuf.Count > 0)
//{
// // 기타영수증 출력
// for (int i = 0; i < m_aEtcPrintBuf.Count; i++, nRow++)
// {
// aPrtBuf[nRow] = m_aEtcPrintBuf[i].ToString().Substring(1).TrimEnd();
// }
//}
#endregion
//if (m_cDevStatus.Printer.UseYn != false) bRet = m_cPosPrinter.ReceiptPrinter(aPrtBuf); // 영수증 출력 처리
if (m_cDevStatus.Printer.UseYn != false) bRet = m_cPosPrinter.ReceiptPrinter(aPrtBuf, 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);
}
return bRet;
}
///
/// 저널데이터 저장
///
///
///
public string SaveJnlExecute(string[] aParam)
{
string sJnlData = "";
string sRet = UserCom.RST_ERR;
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start
string sHPC_SAVE_APPR_DT = string.Empty;
string sHPC_SAVE_APPR_NO = string.Empty;
string sHPC_USE_APPR_DT = string.Empty;
string sHPC_USE_APPR_NO = string.Empty;
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end
try
{
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start
//Params
if (aParam.Length == 4)
{
sHPC_SAVE_APPR_DT = aParam[0];
sHPC_SAVE_APPR_NO = aParam[1];
sHPC_USE_APPR_DT = aParam[2];
sHPC_USE_APPR_NO = aParam[3];
}
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end
// 저널데이터 획득
int nRow = 0;
for (int i = 0; i < m_aRecPrintBuf.Count; i++)
{
if (m_aRecPrintBuf[i].ToString().Length > 0)
{
string sPrtHdr = m_aRecPrintBuf[i].ToString().Substring(1, 5);
//if (sPrtHdr == PosConst.PRT_HDR.PRT_TBM || sPrtHdr == PosConst.PRT_HDR.PRT_IMG) continue;
if (sPrtHdr == PosConst.PRT_HDR.PRT_IMG) continue;
if (m_aRecPrintBuf[i].ToString().StartsWith(PosConst.PRT_ITEM.REC) == true) sJnlData += CmUtil.RPadH(m_aRecPrintBuf[i].ToString().Substring(1), 47);
nRow++;
}
}
if (sJnlData == "") sJnlData = "Empty Journal Data";
// 저널데이터 저장
string sQuery = "";
if (m_cDataCommon.TradeNoAddCheck("") == false)
{
//string sRegNo = string.Empty;
//DataTable dt = null;
//sQuery = " SELECT ISNULL(MAX(REG_NO),0) AS REG_NO ";
//sQuery += " WHERE 1 = 1 ";
//sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
//sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "'";
//sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
//sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "'";
//int iRet = m_cSqlDbService.DBSelect(sQuery, out dt);
//sRegNo = dt.Rows[0]["REG_NO"].ToString();
sQuery += " INSERT INTO POSLOG..ETC_SALE_JOURNAL ( ";
sQuery += " CMP_CD, STOR_CD, SALE_DT, POS_NO, REG_NO, TRADE_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT, ";
sQuery += " SYS_TIME, PIC_NO, BILL_AMT, JOURNAL_DATA, SEND_YN, REG_DATE, UPD_DATE ";
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start -- 주석 처리 (ETC_SALE_JOURNAL 이라 주석)
//추가
//sQuery += " ,HPC_SAVE_APPR_DT, HPC_SAVE_APPR_NO ,HPC_USE_APPR_DT, HPC_USE_APPR_NO";
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end
sQuery += " ) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}' , '{9}', ";
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start -- 주석 처리 (ETC_SALE_JOURNAL 이라 주석 처리)
// 기존
sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}', '{16}' )";
// 변경
//sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}', {16} ";
//sQuery += ", '{17}','{18}', '{19}','{20}' ";
//sQuery += " )";
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end
sQuery = string.Format(sQuery
, m_cTrnStatus.Head.CmpCd // CMP_CD
, m_cTrnStatus.Head.StoreCd // STOR_CD
, m_cTrnStatus.Head.SaleDate // SALE_DT
, m_cTrnStatus.Head.PosNo // POS_NO
, m_cTrnStatus.Head.RegNo // REG_NO
, m_cTrnStatus.Head.TradeNo // TRADE_NO
, m_cTrnStatus.Head.TradeDiv // TRADE_DIV
, m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN
, m_cTrnStatus.Head.TradeKind // TRADE_KINDPER
, m_cTrnStatus.Head.SysYmd // SYS_DT
, m_cTrnStatus.Head.PayHms // SYS_TIME
, m_cTrnStatus.Head.CashierId // PIC_NO
, m_cTrnStatus.Head.NetSaleAmt // BILL_AMT
, sJnlData
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start -- 주석 처리 ETC_SALE_JOURNAL 이라 주석 처리
// 기존
, "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss"));
// 변경
//, "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss")
//, sHPC_SAVE_APPR_DT
//, sHPC_SAVE_APPR_NO
//, sHPC_USE_APPR_DT
//, sHPC_USE_APPR_NO
//);
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end -- 주석 처리 ETC_SALE_JOURNAL 이라 주석 처리
}
else
{
sQuery += " INSERT INTO POSLOG..TR_SALE_JOURNAL ( ";
sQuery += " CMP_CD, STOR_CD, SALE_DT, POS_NO, TRADE_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT, ";
sQuery += " SYS_TIME, PIC_NO, BILL_AMT, JOURNAL_DATA, SEND_YN, REG_DATE, UPD_DATE ";
//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 += " ) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}' , '{9}', ";
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start
// 기존
//sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}' )";
//변경
sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}' ";
sQuery += ", '{16}','{17}' , '{18}','{19}' ";
sQuery += " )";
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end
//#20180131 인천공항 통합POS 사용유무가 사용이면 SEND_YN을 A로 설정 start
//TR_SALE_HEADER, TR_SALE_JOURNAL
//기존
/*
sQuery = string.Format(sQuery
, m_cTrnStatus.Head.CmpCd // CMP_CD
, m_cTrnStatus.Head.StoreCd // STOR_CD
, m_cTrnStatus.Head.SaleDate // SALE_DT
, m_cTrnStatus.Head.PosNo // POS_NO
// , m_cTrnStatus.Head.RegNo // REG_NO
, m_cTrnStatus.Head.TradeNo // TRADE_NO
, m_cTrnStatus.Head.TradeDiv // TRADE_DIV
, m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN
, m_cTrnStatus.Head.TradeKind // TRADE_KINDPER
, m_cTrnStatus.Head.SysYmd // SYS_DT
, m_cTrnStatus.Head.PayHms // SYS_TIME
, m_cTrnStatus.Head.CashierId // PIC_NO
, m_cTrnStatus.Head.NetSaleAmt // BILL_AMT
, sJnlData
, "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss"));
*/
//변경
if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1"
//grayber@20180228 [BRKR] 인천공항 SEND_YN 매출전송유무 'A' 제거 start
&& m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) != true
//grayber@20180228 [BRKR] 인천공항 SEND_YN 매출전송유무 'A' 제거 end
)
{
sQuery = string.Format(sQuery
, m_cTrnStatus.Head.CmpCd // CMP_CD
, m_cTrnStatus.Head.StoreCd // STOR_CD
, m_cTrnStatus.Head.SaleDate // SALE_DT
, m_cTrnStatus.Head.PosNo // POS_NO
// , m_cTrnStatus.Head.RegNo // REG_NO
, m_cTrnStatus.Head.TradeNo // TRADE_NO
, m_cTrnStatus.Head.TradeDiv // TRADE_DIV
, m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN
, m_cTrnStatus.Head.TradeKind // TRADE_KINDPER
, m_cTrnStatus.Head.SysYmd // SYS_DT
, m_cTrnStatus.Head.PayHms // SYS_TIME
, m_cTrnStatus.Head.CashierId // PIC_NO
, m_cTrnStatus.Head.NetSaleAmt // BILL_AMT
, sJnlData
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start
// 기존
//, "A", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss"));
// 변경
, "A", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss")
, sHPC_SAVE_APPR_DT
, sHPC_SAVE_APPR_NO
, sHPC_USE_APPR_DT
, sHPC_USE_APPR_NO
);
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end
}
else
{
sQuery = string.Format(sQuery
, m_cTrnStatus.Head.CmpCd // CMP_CD
, m_cTrnStatus.Head.StoreCd // STOR_CD
, m_cTrnStatus.Head.SaleDate // SALE_DT
, m_cTrnStatus.Head.PosNo // POS_NO
// , m_cTrnStatus.Head.RegNo // REG_NO
, m_cTrnStatus.Head.TradeNo // TRADE_NO
, m_cTrnStatus.Head.TradeDiv // TRADE_DIV
, m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN
, m_cTrnStatus.Head.TradeKind // TRADE_KINDPER
, m_cTrnStatus.Head.SysYmd // SYS_DT
, m_cTrnStatus.Head.PayHms // SYS_TIME
, m_cTrnStatus.Head.CashierId // PIC_NO
, m_cTrnStatus.Head.NetSaleAmt // BILL_AMT
, sJnlData
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 start
// 기존
//, "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss"));
// 변경
, "0", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss")
, sHPC_SAVE_APPR_DT
, sHPC_SAVE_APPR_NO
, sHPC_USE_APPR_DT
, sHPC_USE_APPR_NO
);
//grayber@20180212 해피포인트 전자영수증 I/F 개선 #13924 end
}
//#20180131 인천공항 통합POS 사용유무가 사용이면 SEND_YN을 A로 설정 end
// 쿼리 로그, Rhee
if (m_cPosStatus.Base.CmpCd.ToUpper().Equals("PCCN"))
{
UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "@@SaveJnlExecute=" + sQuery);
}
}
m_cSqlDbService.SetDBConnectionString(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword);
if (m_cSqlDbService.DBExecuteNonQuery(new string[] { sQuery }) == UserCom.OK) return UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 저널데이터 저장 - 서버에서 조회 (복구용)
///
///
///
public string SaveJnlDataExecute(string[] aParam)
{
string sJnlData = "";
string sRet = UserCom.RST_ERR;
try
{
// 저널데이터 획득
sJnlData = aParam[0];
// 저널데이터 저장
string sQuery = "";
if (m_cDataCommon.TradeNoAddCheck("") == false)
{
//string sRegNo = string.Empty;
//DataTable dt = null;
//sQuery = " SELECT ISNULL(MAX(REG_NO),0) AS REG_NO ";
//sQuery += " FROM POSLOG..ETC_SALE_HEADER ";
//sQuery += " WHERE 1 = 1 ";
//sQuery += " AND CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
//sQuery += " AND SALE_DT = '" + m_cPosStatus.Base.SaleDate + "'";
//sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
//sQuery += " AND POS_NO = '" + m_cPosStatus.Base.PosNo + "'";
//int iRet = m_cSqlDbService.DBSelect(sQuery, out dt);
//sRegNo = dt.Rows[0]["REG_NO"].ToString();
sQuery += " INSERT INTO POSLOG..ETC_SALE_JOURNAL ( ";
sQuery += " CMP_CD, STOR_CD, SALE_DT, POS_NO, REG_NO, TRADE_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT, ";
sQuery += " SYS_TIME, PIC_NO, BILL_AMT, JOURNAL_DATA, SEND_YN, REG_DATE, UPD_DATE ";
sQuery += " ) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}' , '{9}', ";
sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}', '{16}' )";
sQuery = string.Format(sQuery
, m_cTrnStatus.Head.CmpCd // CMP_CD
, m_cTrnStatus.Head.StoreCd // STOR_CD
, m_cTrnStatus.Head.SaleDate // SALE_DT
, m_cTrnStatus.Head.PosNo // POS_NO
, m_cTrnStatus.Head.RegNo // REG_NO
, m_cTrnStatus.Head.TradeNo // TRADE_NO
, m_cTrnStatus.Head.TradeDiv // TRADE_DIV
, m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN
, m_cTrnStatus.Head.TradeKind // TRADE_KINDPER
, m_cTrnStatus.Head.SysYmd // SYS_DT
, m_cTrnStatus.Head.PayHms // SYS_TIME
, m_cTrnStatus.Head.CashierId // PIC_NO
, m_cTrnStatus.Head.NetSaleAmt // BILL_AMT
, sJnlData
, "1", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss"));
}
else
{
sQuery += " INSERT INTO POSLOG..TR_SALE_JOURNAL ( ";
sQuery += " CMP_CD, STOR_CD, SALE_DT, POS_NO, TRADE_NO, TRADE_DIV, TRAIN_MODE_YN, TRADE_KINDPER, SYS_DT, ";
sQuery += " SYS_TIME, PIC_NO, BILL_AMT, JOURNAL_DATA, SEND_YN, REG_DATE, UPD_DATE ";
sQuery += " ) VALUES ( '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}' , '{9}', ";
sQuery += " '{10}','{11}', '{12}', N'{13}', '{14}', '{15}' )";
sQuery = string.Format(sQuery
, m_cTrnStatus.Head.CmpCd // CMP_CD
, m_cTrnStatus.Head.StoreCd // STOR_CD
, m_cTrnStatus.Head.SaleDate // SALE_DT
, m_cTrnStatus.Head.PosNo // POS_NO
// , m_cTrnStatus.Head.RegNo // REG_NO
, m_cTrnStatus.Head.TradeNo // TRADE_NO
, m_cTrnStatus.Head.TradeDiv // TRADE_DIV
, m_cTrnStatus.Head.TrainModeYn // TRAIN_MODE_YN
, m_cTrnStatus.Head.TradeKind // TRADE_KINDPER
, m_cTrnStatus.Head.SysYmd // SYS_DT
, m_cTrnStatus.Head.PayHms // SYS_TIME
, m_cTrnStatus.Head.CashierId // PIC_NO
, m_cTrnStatus.Head.NetSaleAmt // BILL_AMT
, sJnlData
, "1", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.ToString("yyyyMMddHHmmss"));
// 쿼리 로그, Rhee
if (m_cPosStatus.Base.CmpCd.ToUpper().Equals("PCCN"))
{
UserLog.WriteLogFile(UserCom.LOG_OP, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "@@SaveJnlDataExecute=" + sQuery);
}
}
m_cSqlDbService.SetDBConnectionString(m_cPosStatus.Base.LocalDbSource, m_cPosStatus.Base.LocalDbCatalog, m_cPosStatus.Base.LocalDbUserID, m_cPosStatus.Base.LocalDbPassword);
if (m_cSqlDbService.DBExecuteNonQuery(new string[] { sQuery }) == UserCom.OK) return UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
/// 명판 및 영수증 메시지 출력데이터 생성
///
/// 0:본영수증, 9:기타영수증
/// BILL_PRT_LOC
public bool SetStampGuidePrintData(string sPrtID, string sPrtLoc)
{
string sQuery = "";
try
{
if (sPrtLoc == PosConst.BILL_PRT_LOC.STAMP)
{
// 명판 생성
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.CN)
{
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.StorName);
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, "Tel:" + m_cPosStatus.Mst.StorTelNo);
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.StorAddr);
}
else
{
//#15274 영수증 문구 추가 요청 start
if (m_cPosStatus.Mst.CompNm.Trim() != "")
{
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.CompNm);
}
//#15274 영수증 문구 추가 요청 end
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.StorName);
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.StorBizPsnNo + " Tel:" + m_cPosStatus.Mst.StorTelNo + " " + m_cPosStatus.Mst.StorOwnName);
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, m_cPosStatus.Mst.StorAddr);
}
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
return true;
}
if (m_dtMstBillMsg == null)
{
sQuery += " SELECT * FROM POSMST..MST_BILL_MSG ";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND '" + m_cPosStatus.Base.SaleDate + "' BETWEEN PRT_START_DT AND PRT_FNSH_DT ";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
// 기존
//sQuery += " ORDER BY 1, 2, 3, 4, 5";
// 변경
sQuery += " ORDER BY 3, 4, 5";
m_dtMstBillMsg = m_cMstService.Select(new string[] { sQuery });
}
if (m_dtMstBillMsg == null || m_dtMstBillMsg.Rows.Count == 0) return false;
bool bExist = false;
string sWriteDiv = "1"; // 작성자별 영수증 메시지 출력(1:본사, 2:팀, 3:점포)
for (int i = 0; i < 3; i++)
{
// 영수증 메시지 출력 우선순위 CHAR 1 1:본부/팀/매장, 2:매장/팀/본부
if (i == 0)
sWriteDiv = (m_cPosStatus.Mst.BillMsgDupPrtRank == "1") ? "1" : "3";
else if (i == 1)
sWriteDiv = "2";
else
sWriteDiv = (m_cPosStatus.Mst.BillMsgDupPrtRank == "1") ? "3" : "1";
foreach (DataRow dr in m_dtMstBillMsg.Rows)
{
if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.PRT_START_DT) == m_cPosStatus.Base.SaleDate
&& CmUtil.IntParse(CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.PRT_START_HOUR)) > CmUtil.IntParse(DateTime.Now.ToString("HHmmss"))) continue;
if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.PRT_LOC) != sPrtLoc) continue;
if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.WRITE_DIV) != sWriteDiv) continue;
// 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대)
string sPrtHead = CmUtil.GetPrtMstToPrtHeadConst(CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.EXPAND_CHAR), CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.BOLD_YN));
if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.RIGHT)
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F102, CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.CHAR_ROW));
else if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.CENTER)
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F103, CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.CHAR_ROW));
else
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.CHAR_ROW));
bExist = true;
}
// 영수증 메시지 중복 허용 여부(1:미허용, 1:중복)
if (bExist == true && m_cPosStatus.Mst.BillMsgDupPrmtYn == "0") break;
}
if (bExist == true) AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
return 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);
}
return false;
}
///
/// 설문참여 메시지 출력데이터 생성
///
/// 0:본영수증, 9:기타영수증
public bool SetVotePrintData(string sPrtID)
{
string sQuery = "";
try
{
if (m_dtMstVoteMsg == null)
{
sQuery += " SELECT * FROM POSMST..MST_SALESORG_SURVY_MSG ";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND '" + m_cPosStatus.Base.SaleDate + "' BETWEEN APPLY_START_DT AND APPLY_FNSH_DT ";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
sQuery += " ORDER BY APPLY_START_DT, PRT_SEQ";
m_dtMstVoteMsg = m_cMstService.Select(new string[] { sQuery });
}
if (m_dtMstVoteMsg == null || m_dtMstVoteMsg.Rows.Count == 0) return false;
bool bExist = false, bVoteNoPrint = false;
for (int i = 0; i < m_dtMstVoteMsg.Rows.Count; i++)
{
DataRow dr = m_dtMstVoteMsg.Rows[i];
if (CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.APLY_START_DT) == m_cPosStatus.Base.SaleDate
&& CmUtil.IntParse(CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.APPLY_START_HOUR)) > CmUtil.IntParse(DateTime.Now.ToString("HHmmss"))) continue;
string sDow = CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.DOW);
if (sDow.Length >= 7)
{
DateTime dt = new DateTime(int.Parse(m_cPosStatus.Base.SaleDate.Substring(0, 4)), int.Parse(m_cPosStatus.Base.SaleDate.Substring(4, 2)), int.Parse(m_cPosStatus.Base.SaleDate.Substring(6, 2)));
if (sDow.Substring((int)dt.DayOfWeek, 1) == "0") continue;
}
// 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대)
string sPrtHead = CmUtil.GetPrtMstToPrtHeadConst(CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.PRT_EXPAND_TYPE)
, CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.BOLD_YN));
string sPrtData = CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.MSG_VAL);
if (sPrtData.StartsWith("참여코드") == true || sPrtData.StartsWith("참여 코드") == true
|| sPrtData.StartsWith("설문참여코드") == true || sPrtData.StartsWith("설문 참여 코드") == true)
{
sPrtData += GetVoteNoPrintData(); // 설문 참여코드 생성
bVoteNoPrint = true;
}
if (i >= m_dtMstVoteMsg.Rows.Count - 1 && bVoteNoPrint == false)
{
if (sPrtData.Length <= 20)
{
sPrtData += GetVoteNoPrintData(); // 마지막 행에 설문 참여코드 생성
}
else
{
if (CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.RIGHT)
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F102, sPrtData);
else if (CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.CENTER)
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F103, sPrtData);
else
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, sPrtData);
sPrtData = GetVoteNoPrintData(); // 마지막 행에 설문 참여코드 생성
}
}
if (CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.RIGHT)
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F102, sPrtData);
else if (CmUtil.GetDataRowStr(dr, PosMst.MST_SALESORG_SURVY_MSG.DATA.ALIGN_TYPE) == PosConst.PRT_ALIGN_TYPE.CENTER)
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F103, sPrtData);
else
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, sPrtData);
bExist = true;
}
if (bExist == true) AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
return 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);
}
return false;
}
///
/// 설문참여코드 생성
///
///
public string GetVoteNoPrintData()
{
string sVoteNo = "";
try
{
string sStoreCd = m_cPosStatus.Base.StoreNo.PadLeft(7, '0').ToUpper(); // 점포코드 7자리로 패딩(대문자로변환)
string sBillNo = m_cPosStatus.Base.TradeNo.Substring(m_cPosStatus.Base.TradeNo.Length - 3, 3); // 영수증번호 끝 3자리
string sPosNo = m_cPosStatus.Base.PosNo.Substring(m_cPosStatus.Base.PosNo.Length - 1, 1); // POS번호 끝 1자리
string sSaleDate = m_cPosStatus.Base.SaleDate;
// 체크 디지트 계산( 각 자리 별 값 곱함[234569812678957]
int nCheckDigit =
(CmUtil.IntParse(sSaleDate.Substring(7, 1)) * 2) + // 1. 구매일자 2번째 자리 수
(CmUtil.IntParse(sSaleDate.Substring(6, 1)) * 3) + // 2. 구매일자 1번째 자리 수
((CmUtil.IntParse(sBillNo.Substring(2, 1)) + 3) * 4) + // 3. 영수증 번호 3번째 자리 수 + 3 : 16진법으로
(GetCharToInt(sStoreCd.Substring(4, 1)) * 5) + // 4. 점포코드 5번째 자리 수
((CmUtil.IntParse(sBillNo.Substring(0, 1)) + 6) * 6) + // 5. 영수증 번호 1번째 자리 수 + 6 : 16진법으로
(GetCharToInt(sStoreCd.Substring(5, 1)) * 9) + // 6. 점포코드 6번째 자리 수
(CmUtil.IntParse(sSaleDate.Substring(2, 1)) * 8) + // 7. 구매년도 1번째 자리 수
(CmUtil.IntParse(sSaleDate.Substring(3, 1)) * 1) + // 8. 구매년도 2번째 자리 수
(GetCharToInt(sStoreCd.Substring(3, 1)) * 2) + // 9. 점포코드 4번째 자리 수
((CmUtil.IntParse(sBillNo.Substring(1, 1)) + 1) * 6) + //10. 영수증 번호 2번째 자리 수 + 1 : 16진법으로
(GetCharToInt(sStoreCd.Substring(6, 1)) * 7) + //11. 점포코드 7번째 자리 수
(GetCharToInt(sStoreCd.Substring(2, 1)) * 8) + //13. 점포코드 3번째 자리 수
((CmUtil.IntParse(sPosNo) + 4) * 9) + //14. 포스 번호 + 4 : 16진법으로
(CmUtil.IntParse(sSaleDate.Substring(5, 1)) * 5) + //15. 구매월 2번째 자리 수
(CmUtil.IntParse(sSaleDate.Substring(4, 1)) * 7); //17. 구매월 1번째 자리 수
nCheckDigit = nCheckDigit % 10; // 합계를 10로 나누어 나머지를 구한다.
nCheckDigit = 15 - nCheckDigit; // 15에서 나머지 값을 뺀 값을 최종 Check Digit로 정한다.
sVoteNo = sSaleDate.Substring(7, 1) + // 1. 구매일자 2번째 자리 수
sSaleDate.Substring(6, 1) + // 2. 구매일자 1번째 자리 수
GetIntToHex(CmUtil.IntParse(sBillNo.Substring(2, 1)) + 3) + // 3. 영수증 번호 3번째 자리 수 + 3 : 16진법으로
sStoreCd.Substring(4, 1) + '-' + // 4. 점포코드 5번째 자리 수
GetIntToHex(CmUtil.IntParse(sBillNo.Substring(0, 1)) + 6) + // 5. 영수증 번호 1번째 자리 수 + 6 : 16진법으로
sStoreCd.Substring(5, 1) + // 6. 점포코드 6번째 자리 수
sSaleDate.Substring(2, 1) + // 7. 구매년도 1번째 자리 수
sSaleDate.Substring(3, 1) + '-' + // 8. 구매년도 2번째 자리 수
sStoreCd.Substring(3, 1) + // 9. 점포코드 4번째 자리 수
GetIntToHex(CmUtil.IntParse(sBillNo.Substring(1, 1)) + 1) + //10. 영수증 번호 2번째 자리 수 + 1 : 16진법으로
sStoreCd.Substring(6, 1) + //11. 점포코드 7번째 자리 수
GetIntToHex(nCheckDigit) + '-' + //12. CHECK DIGIT : 16진법으로
sStoreCd.Substring(2, 1) + //13. 점포코드 3번째 자리 수
GetIntToHex(CmUtil.IntParse(sPosNo) + 4) + //14. 포스 번호 + 4 : 16진법으로
sSaleDate.Substring(5, 1) + //15. 구매월 2번째 자리 수
//영수증설문조사 오류 수정(20170508-조충연K)
//m_cPosStatus.Base.BrandCd.Substring(0, 1) + //16. 회사코드 (P: PC, B: BRK, S:SL)
m_cPosStatus.Base.CmpCd.Substring(0, 1) + //16. 회사코드 (P: PC, B: BRK, S:SL)
sSaleDate.Substring(4, 1); //17. 구매월 1번째 자리 수
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sVoteNo;
}
//#해피앱 추후적립 start, sskim
///
/// 해피앱 추후적립 안내 메세지 출력
///
/// 0:본영수증, 9:기타영수증
public bool SetHpAppAfterSavePrint(string sPrtID)
{
try
{
if (m_cTrnStatus.Head.AftSavePoint > 0)
{
string sPrtHead = CmUtil.GetPrtMstToPrtHeadConst("0", "0");
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, "★ 해피앱 영수증적립 서비스 안내");
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " 해피앱에서 영수증으로 포인트 적립");
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " 받으세요~");
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " ");
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, "* 적립방법");
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " 해피앱 -> 포인트 거래내역(My포인트) ->");
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " 바코드 스캔 배너 -> 영수증 하단 바코드");
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " 스캔 -> 포인트 적립");
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, " ");
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, "(거래시간 기준 24시간내, 매장당 1일 1회)");
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F100, "-");
}
return 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);
}
return false;
}
//#해피앱 추후적립 end, sskim
//grayber@20171214 캠페인 리펀드 쿠폰 start
///
/// 캠페인 리펀드 메시지 출력 ( 상단부 Hard Coding )
///
///
///
public bool SetCpiRefundPrint(string sPrtID)
{
bool bRes = false;
try
{
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) return bRes;
// 영수 캠페인 출력 데이터 설정
ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
ArrayList alPrtBuf = cCampaingMain.GetRefundCampaignPrintData(new string[] { });
// 캠페인 출력 데이터가 없으면 return;
if (alPrtBuf == null || alPrtBuf.Count <= 0) return bRes;
// 메시지 처리 (HARD Coding)
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, "★★★★★★★★★★★★★★★★★★★★★");
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " ");
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BLD, PosConst.PRT_FMT.F101, " * 쿠폰금액 : " + CmUtil.MathRounds(CmUtil.DoubleDivision(m_cTrnStatus.Head.NetSaleAmt, 2), PosConst.MATH_ROUND.TRANCATE, -3).ToString("#,##0") + "원");
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_BLD, PosConst.PRT_FMT.F101, " * 점 포 명 : " + m_cPosStatus.Mst.StorName);
AddPrintData(sPrtID, PosConst.PRT_HDR.PRT_NOR, PosConst.PRT_FMT.F101, " ");
foreach (string sPrtData in alPrtBuf)
{
AddPrintData(sPrtID, sPrtData);
}
bRes = 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);
}
return bRes;
}
//grayber@20171214 캠페인 리펀드 쿠폰 end
///
/// 코드 숫자 변환(설문조사)
///
///
public int GetCharToInt(string sStr)
{
int nRet = 0;
try
{
if (sStr == "") return nRet;
if (CmUtil.IsNumber(sStr.Substring(0, 1)) == true)
{
nRet = CmUtil.IntParse(sStr.Substring(0, 1));
}
else
{
nRet = Convert.ToChar(sStr.Substring(0, 1));
nRet -= 55;
}
}
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 nRet;
}
///
/// 숫자 HEX 변환(설문조사)
///
///
public string GetIntToHex(int nNum)
{
string sRet = "";
try
{
sRet = string.Format("{0:X}", nNum);
}
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;
}
///
/// 영수증 유형 마스터 로딩 처리
///
///
public bool LoadBillTypeMaster()
{
string sQuery = "";
try
{
if (m_dtMstBillType == null)
{
sQuery += " SELECT * FROM POSMST..MST_BILL_TYPE ";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND BILL_TYPE_GRP_CD = '" + CmUtil.GetDataRowStr(PosMstManager.GetMstPos(), PosMst.MST_POS.DATA.BILL_TYPEGRP) + "'";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
sQuery += " ORDER BY 1, 2, 3, 4, 5";
m_dtMstBillType = m_cMstService.Select(new string[] { sQuery });
}
if (m_dtMstBillType == null || m_dtMstBillType.Rows.Count == 0) return false;
return 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);
}
return false;
}
///
/// 영수증유형마스터로 상/하단 출력데이터 생성
///
/// 0:본영수증, 9:기타영수증
/// BILL_TYPE_DIV
public bool SetBillTypeTopBtmPrintData(string sPrtID, string sBillTypeDiv)
{
try
{
// 영수증 유형 마스터 로딩 처리
if (LoadBillTypeMaster() == false) return false;
string sCashierName = m_cPosStatus.Base.CashierName; // 판매원명
if (m_cTrnStatus.Head.CashierId != m_cPosStatus.Base.CashierNo) sCashierName = GetCashierName(m_cTrnStatus.Head.CashierId);
// 2019-04-16 - 1997fx11 : 영수증 캐셔명 인쇄
if (string.IsNullOrEmpty(m_cTrnStatus.Head.CashierId)) { sCashierName = "KIOSK"; }
string sOrderName = m_cTrnStatus.Head.OrderPicNm; // 담당자명
if (m_cTrnStatus.Head.OrderPicNo.Trim() != "" && m_cTrnStatus.Head.OrderPicNm.Trim() == "") sOrderName = GetCashierName(m_cTrnStatus.Head.OrderPicNo.Trim());
foreach (DataRow dr in m_dtMstBillType.Rows)
{
if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.BILL_TYPE_DIV) != sBillTypeDiv) continue;
string sPrtData = CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.BILL_TYPE_TAG);
//점포코드
sPrtData = sPrtData.Replace("", m_cPosStatus.Base.StoreNo);
//시스템일자
sPrtData = sPrtData.Replace("", m_cPosStatus.Global.DateToCulture(m_cTrnStatus.Head.SysYmd));
//시스템시간
sPrtData = sPrtData.Replace("", CmUtil.StrToTime(m_cTrnStatus.Head.PayHms));
//영업일자
sPrtData = sPrtData.Replace("", m_cPosStatus.Global.DateToCulture(m_cTrnStatus.Head.SaleDate));
//포스번호
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.PosNo);
//판매원번호
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.CashierId);
//판매원명
sPrtData = sPrtData.Replace("", sCashierName); // 2019-04-16 - 1997fx11 : 영수증 캐셔명 인쇄
//층코드
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.FloorCd);
//층명
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.FloorNm);
//테이블코드
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.TableNo);
//테이블명
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.TableNm);
//객층
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.CustFloor);
//고객수
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.CustCnt.ToString());
//거래번호
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.TradeNo);
//주문자 사번
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.OrderPicNo);
//주문자 사명
sPrtData = sPrtData.Replace("", sOrderName);
//주문시간
sPrtData = sPrtData.Replace("", CmUtil.StrToTime(m_cTrnStatus.Head.OrderHms));
//주문번호
sPrtData = sPrtData.Replace("", m_cTrnStatus.Head.OrderNo);
// 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대)
string sPrtHead = CmUtil.GetPrtMstToPrtHeadConst(CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.EXPAND_CHAR), CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_MSG.DATA.BOLD_YN));
string sSortDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.SORT_DIV);
if (sSortDiv == PosConst.PRT_ALIGN_TYPE.RIGHT)
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F102, sPrtData);
else if (sSortDiv == PosConst.PRT_ALIGN_TYPE.CENTER)
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F103, sPrtData);
else
AddPrintData(sPrtID, sPrtHead, PosConst.PRT_FMT.F101, sPrtData);
}
return 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);
}
return false;
}
///
/// 영수증유형 결제정보 출력데이터 생성
///
///
///
///
public void SetBillTypePaymentPrintData(string sPrtID, string sTypeDiv, ArrayList alPrtTagData)
{
string sPrtData = "", sData1 = "", sData2 = "";
try
{
// 영수증 유형 마스터 로딩 처리
if (LoadBillTypeMaster() == false) return;
foreach (DataRow dr in m_dtMstBillType.Rows)
{
if (CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.BILL_TYPE_DIV) != sTypeDiv) continue;
// 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대)
string sPrtHead = CmUtil.GetPrtMstToPrtHeadConst(CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.SIZE_DIV), CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.BOLD_YN));
// 정렬구분
string sSortDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.SORT_DIV);
// 태그유형
string sTagData = CmUtil.GetDataRowStr(dr, PosMst.MST_BILL_TYPE.DATA.BILL_TYPE_TAG);
sData1 = ""; sData2 = "";
bool bExist = false;
foreach (string[] aTagData in alPrtTagData)
{
if (sPrtData.IndexOf(aTagData[0]) >= 0) //태그유형
{
sData1 = aTagData[1];
sData2 = aTagData[2];
bExist = true;
}
}
if (bExist == true)
{
if (sData2 == "") continue;
}
else sData2 = sTagData;
SetBillTypePaymentPrintData(sPrtID, sPrtHead, sSortDiv, sData1.Trim() + (sData1.Length == 0 ? "" : " "), sData2.Trim());
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
public void SetBillTypePaymentPrintData(string sPrtID, string sPrtHead, string sSortDiv, string sData1, string sData2)
{
string sPrtData = "";
try
{
int nFullLen = 42;
if (sPrtHead == PosConst.PRT_HDR.PRT_HOR || sPrtHead == PosConst.PRT_HDR.PRT_BIG) nFullLen = 42 / 2; //가로확대, 두배확대
int nHalfLen = nFullLen / 2;
switch (sSortDiv)
{
case PosConst.PRT_ALIGN_TYPE.RIGHT: //오른쪽
if (UsUtil.LenH(sData1.Trim()) + UsUtil.LenH(sData2.Trim()) >= nFullLen)
{
sPrtData = sData1.Trim() + sData2.Trim();
}
else
{
sPrtData = sData1.Trim() + CmUtil.LPadH(sData2, nFullLen - UsUtil.LenH(sData1.Trim()));
}
AddPrintData(sPrtID, sPrtHead, UsUtil.LPadH(sPrtData.TrimStart(), nFullLen));
break;
case PosConst.PRT_ALIGN_TYPE.CENTER: //가운데
sPrtData = sData1.Trim() + sData2.Trim();
if (UsUtil.LenH(sPrtData) < nFullLen)
AddPrintData(sPrtID, sPrtHead, UsUtil.LPadH("", nHalfLen - (UsUtil.LenH(sPrtData) / 2)) + UsUtil.RPadH(sPrtData, nFullLen - (nHalfLen - (UsUtil.LenH(sPrtData) / 2))));
else
AddPrintData(sPrtID, sPrtHead, UsUtil.LPadH(sPrtData.Trim(), nFullLen));
break;
default: //왼쪽
sPrtData = sData1.Trim() + sData2.Trim();
AddPrintData(sPrtID, sPrtHead, UsUtil.RPadH(sPrtData.TrimEnd(), nFullLen));
break;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 영수증 출력데이터 생성
///
/// 0:본영수증, 9:기타영수증
/// 출력형태(PosConst.PRT_HDR)
///
public void AddPrintData(string sPrtID, string sPrtHead, string sPrtData)
{
try
{
sPrtData = ((sPrtData.Length == 0) ? " " : sPrtData);
switch (sPrtID)
{
case PosConst.PRT_ITEM.ETC:
case PosConst.PRT_ITEM.ETC_TEMP:
m_aEtcPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtHead + sPrtData);
break;
default:
m_aRecPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtHead + sPrtData);
break;
}
m_aPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtHead + sPrtData);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
public void AddPrintData(string sPrtID, string sPrtData)
{
try
{
sPrtData = ((sPrtData.Length == 0) ? " " : sPrtData);
switch (sPrtID)
{
case PosConst.PRT_ITEM.ETC:
m_aEtcPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtData);
break;
default:
m_aRecPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtData);
break;
}
m_aPrintBuf.Add(CmUtil.RPadH(sPrtID, 1) + sPrtData);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 영수증 출력데이터 생성
///
/// 0:본영수증, 9:기타영수증
/// 출력형태(PosConst.PRT_HDR)
/// 출력포멧(PosConst.PRT_FMT)
///
public void AddPrintData(string sPrtID, string sPrtHead, string sPrtFmt, string sData)
{
try
{
string sPrtData = "";
if (sPrtFmt == PosConst.PRT_FMT.F100 && (sData == "-" || sData == "=")) // 선귿기
{
//#20170822 영수증 선귿기 실선('─') -> 점선('-')으로 변경 start
//기존
/*
if (sPrtHead == PosConst.PRT_HDR.PRT_BLD)
for (int i = 1; i <= 21; i++) sPrtData += "━";
else
for (int i = 1; i <= 21; i++) sPrtData += "─";
*/
//변경
if (sPrtHead == PosConst.PRT_HDR.PRT_BLD)
for (int i = 1; i <= 42; i++) sPrtData += "-";
else
for (int i = 1; i <= 42; i++) sPrtData += "-";
//#20170822 영수증 선귿기 실선('─') -> 점선('-')으로 변경 end
}
else if (sPrtFmt == PosConst.PRT_FMT.F100) // 선귿기
{
for (int i = 1; i <= 42; i++) sPrtData += sData;
}
else if (sPrtFmt == PosConst.PRT_FMT.F101) // 왼쪽정렬
{
sPrtData = sData;
}
else if (sPrtFmt == PosConst.PRT_FMT.F102) // 오른쪽 정렬
{
sPrtData = CmUtil.LPadH(sData, 42);
}
else if (sPrtFmt == PosConst.PRT_FMT.F103) // 중앙정렬
{
if (sPrtHead == PosConst.PRT_HDR.PRT_HOR || sPrtHead == PosConst.PRT_HDR.PRT_BIG || sPrtHead == PosConst.PRT_HDR.PRT_HRB || sPrtHead == PosConst.PRT_HDR.PRT_BGB)
{
if (CmUtil.LenH(sData) <= 21) sPrtData = CmUtil.LPadH("", 10 - (CmUtil.LenH(sData) / 2)) + sData;
}
else
{
if (CmUtil.LenH(sData) <= 42) sPrtData = CmUtil.LPadH("", 21 - (CmUtil.LenH(sData) / 2)) + sData;
}
}
else
{
sPrtData = sData;
}
AddPrintData(sPrtID, sPrtHead, sPrtData);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 영수증 출력데이터 생성
///
/// 0:본영수증, 9:기타영수증
/// 출력형태(PosConst.PRT_HDR)
/// 출력포멧(PosConst.PRT_FMT)
///
public void AddPrintData(string sPrtID, string sPrtHead, string sPrtFmt, string sData1, string sData2)
{
string sPrtData = "";
try
{
if (sPrtFmt == PosConst.PRT_FMT.F200) // 명(31)+금액(11)
{
if (sPrtHead == PosConst.PRT_HDR.PRT_HOR || sPrtHead == PosConst.PRT_HDR.PRT_BIG)
{
sPrtData = CmUtil.RPadH(sData1, 10) + CmUtil.LPadH(sData2, 11);
}
else
{
sPrtData = CmUtil.RPadH(sData1, 31) + CmUtil.LPadH(sData2, 11);
}
}
if (sPrtFmt == PosConst.PRT_FMT.F201) // 명(31)+금액(11)
{
if (sPrtHead == PosConst.PRT_HDR.PRT_HOR || sPrtHead == PosConst.PRT_HDR.PRT_BIG)
{
sPrtData = CmUtil.LPadH(sData1, 10) + CmUtil.LPadH(sData2, 11);
}
else
{
sPrtData = CmUtil.LPadH(sData1, 31) + CmUtil.LPadH(sData2, 11);
}
}
else if (sPrtFmt == PosConst.PRT_FMT.F202) //명(20)+데이터(22)
{
sPrtData = CmUtil.RPadH(sData1, 20) + CmUtil.LPadH(sData2, 22);
}
else if (sPrtFmt == PosConst.PRT_FMT.F203) //명(16)+데이터(26)
{
sPrtData = CmUtil.RPadH(sData1, 11) + CmUtil.RPadH(sData2, 31);
}
else if (sPrtFmt == PosConst.PRT_FMT.F204) //명(20)+데이터(22)
{
sPrtData = CmUtil.RPadH(sData1, 20) + " " + CmUtil.RPadH(sData2, 21);
}
else if (sPrtFmt == PosConst.PRT_FMT.F205) // 명(31-우정렬)+금액(11)
{
sPrtData = CmUtil.LPadH(sData1, 31) + CmUtil.LPadH(sData2, 11);
}
else if (sPrtFmt == PosConst.PRT_FMT.F206) // 명(20-우정렬)+금액(12)
{
sPrtData = CmUtil.RPadH(sData1, 20) + CmUtil.LPadH(sData2, 12);
}
//#20171227, 예약증 양식 출력 Start
else if (sPrtFmt == PosConst.PRT_FMT.F207) // 명(16-우정렬)+데이터(26)
{
sPrtData = CmUtil.RPadH(sData1, 16) + CmUtil.RPadH(sData2, 26);
}
//#20171227, 예약증 양식 출력 End
AddPrintData(sPrtID, sPrtHead, sPrtData);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 영수증 출력데이터 생성
///
/// 0:본영수증, 9:기타영수증
/// 출력형태(PosConst.PRT_HDR)
/// 출력포멧(PosConst.PRT_FMT)
///
public void AddPrintData(string sPrtID, string sPrtHead, string sPrtFmt, string sData1, string sData2, string sData3)
{
string sPrtData = "";
try
{
if (sPrtFmt == PosConst.PRT_FMT.F300) // 3개=>명LPAD(26)+수량(5)+금액(11)
{
sPrtData = CmUtil.LPadH(sData1, 26) + CmUtil.LPadH(sData2, 5) + CmUtil.LPadH(sData3, 11);
}
if (sPrtFmt == PosConst.PRT_FMT.F301) // 3개=>명RPAD(26)+수량(5)+금액(11)
{
sPrtData = CmUtil.RPadH(sData1, 26) + CmUtil.LPadH(sData2, 5) + CmUtil.LPadH(sData3, 11);
}
if (sPrtFmt == PosConst.PRT_FMT.F302) // 3개(카드/승인번호용)=>명RPAD(17)+명LPAD(9)+명LPAD(16)
{
// 카드/승인번호
//Rhee, #2017/08/28 중국 카드번호 프린트 마킹예외처리 Start
// 기존
////sPrtData = CmUtil.RPadH(sData1, 17) + CmUtil.LPadH(sData2, 9) + CmUtil.LPadH(sData3, 16);
// 변경
// 마킹된 카드번호 16자리 출력(1234********1234), 1라인은 42Byte
if (m_cPosStatus.Base.CmpCd.ToUpper().Equals("PCCN"))
{
sPrtData = CmUtil.RPadH(sData1, 17) + CmUtil.LPadH(sData2, 16) + CmUtil.LPadH(sData3, 9);
}
else
{
sPrtData = CmUtil.RPadH(sData1, 17) + CmUtil.LPadH(sData2, 9) + CmUtil.LPadH(sData3, 16);
}
//Rhee, #2017/08/28 중국 카드번호 프린트 마킹예외처리 End
}
if (sPrtFmt == PosConst.PRT_FMT.F303) // 3개(카드/승인번호용)=>명RPAD(17)+명LPAD(9)+명LPAD(16) 2 // 현금반품 내역 추가 20170830 goblin6
{
sPrtData = CmUtil.RPadH(sData1, 23) + CmUtil.RPadH(sData2, 8) + CmUtil.LPadH(sData3, 11);
}
//#20171227, 예약증 양식 출력 Start
if (sPrtFmt == PosConst.PRT_FMT.F304) // 3개=>명RPAD(16)+데이터RPAD(9)+데이터RPAD(17)
{
sPrtData = CmUtil.RPadH(sData1, 16) + CmUtil.RPadH(sData2, 9) + CmUtil.RPadH(sData3, 17);
}
//#20171227, 예약증 양식 출력 End
else if (sPrtFmt == PosConst.PRT_FMT.F103) // 중앙정렬
{
if (sPrtHead == PosConst.PRT_HDR.PRT_HOR || sPrtHead == PosConst.PRT_HDR.PRT_BIG)
{
if (CmUtil.LenH(sData1) <= 21) sPrtData = CmUtil.LPadH("", 10 - (CmUtil.LenH(sData1) / 2)) + sData1;
}
else
{
if (CmUtil.LenH(sData1) <= 42) sPrtData = CmUtil.LPadH("", 21 - (CmUtil.LenH(sData1) / 2)) + sData1;
}
}
AddPrintData(sPrtID, sPrtHead, sPrtData);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 영수증 출력데이터 생성
///
/// 0:본영수증, 9:기타영수증
/// 출력형태(PosConst.PRT_HDR)
/// 출력포멧(PosConst.PRT_FMT)
///
public void AddPrintData(string sPrtID, string sPrtHead, string sPrtFmt, string sData1, string sData2, string sData3, string sData4)
{
string sPrtData = "";
try
{
if (sPrtFmt == PosConst.PRT_FMT.F401) // 명(16)+수량(5)+할인(10)+금액(11)
{
sPrtData = CmUtil.RPadH(sData1, 16) + CmUtil.LPadH(sData2, 5) + CmUtil.LPadH(sData3, 10) + CmUtil.LPadH(sData4, 11);
}
if (sPrtFmt == PosConst.PRT_FMT.F402) // 명(16)+수량(5)+할인(10)+금액(11)
{
sPrtData = CmUtil.LPadH(sData1, 16) + CmUtil.LPadH(sData2, 5) + CmUtil.LPadH(sData3, 10) + CmUtil.LPadH(sData4, 11);
}
if (sPrtFmt == PosConst.PRT_FMT.F403) // 명(우)(2)+수량(19)+할인(10)+금액(11)
{
sPrtData = CmUtil.LPadH(sData1, 2) + CmUtil.LPadH(sData2, 19) + CmUtil.LPadH(sData3, 10) + CmUtil.LPadH(sData4, 11);
}
if (sPrtFmt == PosConst.PRT_FMT.F404) // 명(우)(12)+수량(7)+명(우)(12)+금액(11)
{
sPrtData = CmUtil.LPadH(sData1, 12) + CmUtil.LPadH(sData2, 7) + CmUtil.LPadH(sData3, 12) + CmUtil.LPadH(sData4, 11);
}
if (sPrtFmt == PosConst.PRT_FMT.F405) // 명(좌)(10)+명(좌)(15)+명(좌)(10)+명(좌)(7)
{
sPrtData = CmUtil.RPadH(sData1, 10) + CmUtil.RPadH(sData2, 15) + CmUtil.RPadH(sData3, 10) + CmUtil.RPadH(sData4, 7);
}
//#17142 [해피오더]POS로그인 시 영수증프린터로 장부재고 자동 출력 start
if (sPrtFmt == PosConst.PRT_FMT.F406) // 명(좌)(14)+명(좌)(10)+명(좌)(14)+명(좌)(4)
{
sPrtData = CmUtil.RPadH(sData1, 14) + CmUtil.RPadH(sData2, 10) + CmUtil.RPadH(sData3, 14) + CmUtil.LPadH(sData4, 4);
}
//#17142 [해피오더]POS로그인 시 영수증프린터로 장부재고 자동 출력 end
AddPrintData(sPrtID, sPrtHead, sPrtData);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 영수증 출력데이터 생성
///
/// 0:본영수증, 9:기타영수증
/// 출력형태(PosConst.PRT_HDR)
/// 출력포멧(PosConst.PRT_FMT)
///
public void AddPrintData(string sPrtID, string sPrtHead, string sPrtFmt, string sData1, string sData2, string sData3, string sData4, string sData5)
{
string sPrtData = "";
try
{
if (sPrtFmt == PosConst.PRT_FMT.F501) // 수량(3)+명(좌)(16)+단가(10)+금액(11)+부가세코드(2)
{
sPrtData = CmUtil.LPadH(sData2, 3) + CmUtil.RPadH(sData1, 16) + CmUtil.LPadH(sData3, 10) + CmUtil.LPadH(sData4, 11) + CmUtil.LPadH(sData5, 2);
}
if (sPrtFmt == PosConst.PRT_FMT.F502) // 과세코드(4)+과세율(11)+순매출액(9)+과세금액(9)+합계(9)
{
sPrtData = CmUtil.RPadH(sData1, 4) + CmUtil.RPadH(sData2, 11) + CmUtil.LPadH(sData3, 9) + CmUtil.LPadH(sData4, 9) + CmUtil.LPadH(sData5, 9);
}
AddPrintData(sPrtID, sPrtHead, sPrtData);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 최근 영수증 저장
///
///
///
///
private void WriteReceiptFile(string sFileName, ArrayList alPrtData, string sPrtItem)
{
try
{
if (File.Exists(BaseCom.NxDataPath + sFileName) == true) File.Delete(BaseCom.NxDataPath + sFileName);
if (alPrtData.Count <= 0) return;
FileStream fs = new FileStream(BaseCom.NxDataPath + sFileName, FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
try
{
for (int i = 0; i < alPrtData.Count; i++)
{
if (alPrtData[i].ToString().StartsWith(PosConst.PRT_ITEM.REC) || alPrtData[i].ToString().StartsWith(PosConst.PRT_ITEM.ETC))
{
sw.WriteLine(alPrtData[i].ToString());
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
finally
{
sw.Close();
fs.Close();
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///
/// 최근 영수증 읽기
///
///
///
protected ArrayList ReadReceiptFile(string sFileName, ArrayList alPrtData)
{
try
{
string sFilePath = BaseCom.NxDataPath + sFileName;
if (File.Exists(sFilePath) == false) return alPrtData;
using (StreamReader sr = new StreamReader(sFilePath, System.Text.Encoding.Default))
{
sr.BaseStream.Seek(0, SeekOrigin.Begin);
while (sr.Peek() >= 0)
{
string sLineData = sr.ReadLine();
sLineData = sLineData.Replace(PosConst.PRT_HDR.PRT_REP, PosConst.PRT_HDR.PRT_NOR);
alPrtData.Add(sLineData);
}
}
}
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 alPrtData;
}
private string GetCashierName(string sCashierNo)
{
try
{
// 캐셔마스터 조회
IMasterUs cService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.CASHIER_MASTER);
DataTable dtDataInfo = cService.Select(new string[] { m_cPosStatus.Base.StoreNo, sCashierNo });
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
foreach (DataRow drData in dtDataInfo.Rows)
{
return CmUtil.GetDataRowStr(drData, PosMst.MST_USER.DATA.CASHIER_NM);
}
}
}
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 "";
}
//#20170918 기념일 배송 출력 start
protected ArrayList ReadAnniversaryFile(string sFileName, ArrayList alPrtData)
{
try
{
string sFilePath = sFileName; // BaseCom.NxDataPath + sFileName;
if (File.Exists(sFilePath) == false) return alPrtData;
using (StreamReader sr = new StreamReader(sFilePath, System.Text.Encoding.Default))
{
sr.BaseStream.Seek(0, SeekOrigin.Begin);
while (sr.Peek() >= 0)
{
string sLineData = sr.ReadLine();
sLineData = sLineData.Replace(PosConst.PRT_HDR.PRT_REP, PosConst.PRT_HDR.PRT_NOR);
AddPrintData(PosConst.PRT_ITEM.ETC, PosConst.PRT_HDR.PRT_NOR, sLineData.Trim());
}
}
}
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 alPrtData;
}
//#20170918 기념일 배송 출력 end
// grayber@20180122 전자영수증 조건 추가 start - 해피앱 전자영수증 사용 여부 확인 함수
///
/// 해피앱 전자영수증 확인 함수
///
/// 전자영수증 사용 유무 (Y:N)
public string CheckElectronic_Receipt()
{
string sElectronic_ReceiptYN = string.Empty;
try
{
if (m_bElectRec == true)
{
return sElectronic_ReceiptYN = "Y";
}
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
{
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
{
if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (cEtcItem.OCCUR_ENTRY_12 == "Y")
{
//해피앱 전자발행설정유무 값
sElectronic_ReceiptYN = cEtcItem.OCCUR_ENTRY_23;
break;
}
}
}
if (sElectronic_ReceiptYN.Equals("Y") == true) return sElectronic_ReceiptYN;
ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem)
{
if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.POINT_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT)
{
if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (cPayItem.OCCUR_ENTRY_12 == "Y")
{
sElectronic_ReceiptYN = cPayItem.OCCUR_ENTRY_23;
break;
}
}
}
return sElectronic_ReceiptYN;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "Electronic_Receipt : " + sElectronic_ReceiptYN + "", ex.Message);
return sElectronic_ReceiptYN;
}
}
// grayber@20180122 전자영수증 조건 추가 end
//#20180202 결제영수증 발행 안해도 직전영수증 발행시 해당 영수증 출력 start
///
/// 영수증 저장 처리
///
public void SaveReceiptFile()
{
try
{
// 추후적립일때 직전영수증 파일 저장 안함(2017.07.21)
if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.AFTER.HP_SAVE && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.AFTER.CASH_RECEIPT)
{
WriteReceiptFile("PRT_REC.TXT", m_aRecPrintBuf, PosConst.PRT_ITEM.REC);
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
//#20180202 결제영수증 발행 안해도 직전영수증 발행시 해당 영수증 출력 end
}
}