spc-kiosk-pb/Service/AsvDataProcess/PosReceiptBase.cs
2019-06-16 14:12:09 +09:00

2460 lines
132 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
/// <summary>
/// 출력데이터(0:RECEIPT:본영수증)
/// </summary>
protected static ArrayList m_aRecPrintBuf = new ArrayList();
/// <summary>
/// 출력데이터(9:NOJNL:부가영수증(저널 대상아님))
/// </summary>
protected static ArrayList m_aEtcPrintBuf = new ArrayList();
/// <summary>
/// 영수증 메시지 마스터 정보
/// </summary>
protected DataTable m_dtMstBillMsg = null;
/// <summary>
/// 영수증 유형 마스터 정보
/// </summary>
protected DataTable m_dtMstBillType = null;
/// <summary>
/// 설문참여 메시지 마스터 정보
/// </summary>
protected DataTable m_dtMstVoteMsg = null;
/// <summary>
/// 정렬구분('0':오른쪽, '1':가운데, '2':왼쪽)
/// </summary>
protected string m_sPaySortDiv;
/// <summary>
/// 크기구분(0:보통, 1:굵게, 2:가로확대, 3:세로확대, 4:전체확대)
/// </summary>
protected string m_sPaySizeDiv;
//grayber@20180226 대기번호표 개선 start - 구분 추가
/// <summary>
/// 전자영수증 구분
/// </summary>
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);
}
/// <summary>
/// 영수증 버퍼 초기화
/// </summary>
/// <returns></returns>
public void PrintBufClear()
{
m_aPrintBuf.Clear();
m_aRecPrintBuf.Clear();
m_aEtcPrintBuf.Clear();
}
/// <summary>
/// 영수증 상단 영역 출력
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
/// <param name="bTopImg">상단이미지 출력여부</param>
/// <param name="bStamp">명판 출력여부</param>
/// <param name="bTopMsg">상단메시지 출력여부</param>
/// <param name="bTopInfo">일자시간 출력여부</param>
/// <returns></returns>
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;
}
/// <summary>
/// 영수증 하단 영역 출력
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
/// <param name="bBtmImg">하단이미지 출력여부</param>
/// <param name="bBtmMsg">하단메시지 출력여부</param>
/// <param name="bBtmInfo">하단정보 출력여부</param>
/// <param name="bBarCode">영수증바코드 출력여부</param>
/// <param name="bAddMsg">추가메시지 출력여부</param>
/// <returns></returns>
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 ()
/// <summary>
/// 영수 캠페인(포함) 출력 데이터 설정
/// </summary>
/// <param name="sPrtID"></param>
/// <returns></returns>
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
/// <summary>
/// 영수증 상단 텍스트로고 데이터 생성
/// </summary>
/// <param name="sPrtID"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 영수증 출력 완료(커팅) 데이터 생성
/// </summary>
/// <param name="sPrtID"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 상품(정상상품) 출력 데이터 생성
/// </summary>
/// <param name="sPrtID"></param>
/// <param name="sPRT_HDR"></param>
/// <param name="sItemName"></param>
/// <param name="nSalePrc"></param>
/// <param name="nSaleQty"></param>
/// <param name="nDcAmt"></param>
/// <param name="sSaleAmt"></param>
/// <param name="sTaxCd"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 영수증 출력 처리
/// </summary>
/// <param name="bRecPrt">본영수증출력여부</param>
/// <param name="bEtcPrt">기타 출력여부</param>
/// <returns></returns>
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;
}
/// <summary>
/// 저널데이터 저장
/// </summary>
/// <param name="aParam"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 저널데이터 저장 - 서버에서 조회 (복구용)
/// </summary>
/// <param name="aParam"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 명판 및 영수증 메시지 출력데이터 생성
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
/// <param name="sPrtLoc">BILL_PRT_LOC</param>
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;
}
/// <summary>
/// 설문참여 메시지 출력데이터 생성
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
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;
}
/// <summary>
/// 설문참여코드 생성
/// </summary>
/// <returns></returns>
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
/// <summary>
/// 해피앱 추후적립 안내 메세지 출력
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
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
/// <summary>
/// 캠페인 리펀드 메시지 출력 ( 상단부 Hard Coding )
/// </summary>
/// <param name="sPrtID"></param>
/// <returns></returns>
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
/// <summary>
/// 코드 숫자 변환(설문조사)
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 숫자 HEX 변환(설문조사)
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 영수증 유형 마스터 로딩 처리
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 영수증유형마스터로 상/하단 출력데이터 생성
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
/// <param name="sBillTypeDiv">BILL_TYPE_DIV</param>
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("<STORECODE>", m_cPosStatus.Base.StoreNo);
//시스템일자
sPrtData = sPrtData.Replace("<SYSTEMDATE>", m_cPosStatus.Global.DateToCulture(m_cTrnStatus.Head.SysYmd));
//시스템시간
sPrtData = sPrtData.Replace("<SYSTEMTIME>", CmUtil.StrToTime(m_cTrnStatus.Head.PayHms));
//영업일자
sPrtData = sPrtData.Replace("<SALEDATE>", m_cPosStatus.Global.DateToCulture(m_cTrnStatus.Head.SaleDate));
//포스번호
sPrtData = sPrtData.Replace("<POSNO>", m_cTrnStatus.Head.PosNo);
//판매원번호
sPrtData = sPrtData.Replace("<CASHIERNO>", m_cTrnStatus.Head.CashierId);
//판매원명
sPrtData = sPrtData.Replace("<CASHIERNAME>", sCashierName); // 2019-04-16 - 1997fx11 : 영수증 캐셔명 인쇄
//층코드
sPrtData = sPrtData.Replace("<FLOORNO>", m_cTrnStatus.Head.FloorCd);
//층명
sPrtData = sPrtData.Replace("<FLOORNM>", m_cTrnStatus.Head.FloorNm);
//테이블코드
sPrtData = sPrtData.Replace("<TABLENO>", m_cTrnStatus.Head.TableNo);
//테이블명
sPrtData = sPrtData.Replace("<TABLENM>", m_cTrnStatus.Head.TableNm);
//객층
sPrtData = sPrtData.Replace("<CUSTAGE>", m_cTrnStatus.Head.CustFloor);
//고객수
sPrtData = sPrtData.Replace("<CUSTCOUNT>", m_cTrnStatus.Head.CustCnt.ToString());
//거래번호
sPrtData = sPrtData.Replace("<RECEIPTNO>", m_cTrnStatus.Head.TradeNo);
//주문자 사번
sPrtData = sPrtData.Replace("<ORDERNO>", m_cTrnStatus.Head.OrderPicNo);
//주문자 사명
sPrtData = sPrtData.Replace("<ORDERNAME>", sOrderName);
//주문시간
sPrtData = sPrtData.Replace("<ORDERTIME>", CmUtil.StrToTime(m_cTrnStatus.Head.OrderHms));
//주문번호
sPrtData = sPrtData.Replace("<ORDERNO>", 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;
}
/// <summary>
/// 영수증유형 결제정보 출력데이터 생성
/// </summary>
/// <param name="sPrtID"></param>
/// <param name="sTypeDiv"></param>
/// <param name="alPrtTagData"></param>
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);
}
}
/// <summary>
/// 영수증 출력데이터 생성
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
/// <param name="sPrtHead">출력형태(PosConst.PRT_HDR)</param>
/// <param name="sPrtData"></param>
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);
}
}
/// <summary>
/// 영수증 출력데이터 생성
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
/// <param name="sPrtHead">출력형태(PosConst.PRT_HDR)</param>
/// <param name="sPrtFmt">출력포멧(PosConst.PRT_FMT)</param>
/// <param name="sData"></param>
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);
}
}
/// <summary>
/// 영수증 출력데이터 생성
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
/// <param name="sPrtHead">출력형태(PosConst.PRT_HDR)</param>
/// <param name="sPrtFmt">출력포멧(PosConst.PRT_FMT)</param>
/// <param name="sData1"></param>
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);
}
}
/// <summary>
/// 영수증 출력데이터 생성
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
/// <param name="sPrtHead">출력형태(PosConst.PRT_HDR)</param>
/// <param name="sPrtFmt">출력포멧(PosConst.PRT_FMT)</param>
/// <param name="sData1"></param>
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);
}
}
/// <summary>
/// 영수증 출력데이터 생성
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
/// <param name="sPrtHead">출력형태(PosConst.PRT_HDR)</param>
/// <param name="sPrtFmt">출력포멧(PosConst.PRT_FMT)</param>
/// <param name="sData1"></param>
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);
}
}
/// <summary>
/// 영수증 출력데이터 생성
/// </summary>
/// <param name="sPrtID">0:본영수증, 9:기타영수증</param>
/// <param name="sPrtHead">출력형태(PosConst.PRT_HDR)</param>
/// <param name="sPrtFmt">출력포멧(PosConst.PRT_FMT)</param>
/// <param name="sData1"></param>
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);
}
}
/// <summary>
/// 최근 영수증 저장
/// </summary>
/// <param name="sFileName"></param>
/// <param name="alPrtData"></param>
/// <returns></returns>
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);
}
}
/// <summary>
/// 최근 영수증 읽기
/// </summary>
/// <param name="sFileName"></param>
/// <returns></returns>
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 - 해피앱 전자영수증 사용 여부 확인 함수
/// <summary>
/// 해피앱 전자영수증 확인 함수
/// </summary>
/// <returns>전자영수증 사용 유무 (Y:N)</returns>
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
/// <summary>
/// 영수증 저장 처리
/// </summary>
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
}
}