using System;
using System.Text;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;
using Cosmos.Win;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using Cosmos.UI;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 :
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Win
{
public partial class frmDutchPay : Form
{
#region Variable
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조
private TranStatus m_cTrnStatus = new TranStatus(); // 거래정보 참조
private DeviceStatus m_cDevStatus = new DeviceStatus(); // 디바이스 관리
private PosOLEDevice.DelegateOlePos delegatePos;
private IICReaderUs m_cDeviceICReader = null;
private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스
private IDataProcessUs m_cDataService = null;
private ISalePluItemUs m_cPluService = null; // 판매 등록 관리
private string m_sPosMenuKeyIn;
public string PosMenuKeyIn { set { m_sPosMenuKeyIn = value; } get { return m_sPosMenuKeyIn; } } //입력 필러
private string m_sPosMenuKeyOut;
public string PosMenuKeyOut { set { m_sPosMenuKeyOut = value; } get { return m_sPosMenuKeyOut; } } //출력 필러
private string m_sPaying = "0";
public string Paying { set { m_sPaying = value; } } //결제 진행중
private bool bNotDoubleClik = false; // 더블 클릭 방지용
private string m_sPosMenuKey; // 입력코드
///
/// 할인 구분
///
public string SetPosMenuKey { set { this.m_sPosMenuKey = value; } }
///
/// 등록 상품 리스트 데이터
///
private DataTable m_dtcglAlliTem;
///
/// 선택 상품 리스트 데이터
///
private DataTable m_dtcglBundleiTem;
#endregion Variable
#region 생성자 & 소멸자 & 폼초기화
///
/// 생성자
///
public frmDutchPay()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
//this.UpdateStyles();
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보
m_cDevStatus = (DeviceStatus)StateObject.DEVICE;
m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE);
m_cDeviceICReader = (IICReaderUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_ICREADER);
m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
m_cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM);
delegatePos = new PosOLEDevice.DelegateOlePos(OnDeviceEvent);
}
private void frmDutchPay_Load(object sender, EventArgs e)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
InitControl();
}
private void frmDutchPay_Activated(object sender, EventArgs e)
{
PosOLEDevice.SetEventHandle(delegatePos);
}
private void frmDutchPay_Deactivate(object sender, EventArgs e)
{
PosOLEDevice.SetEventHandle(null);
}
private void frmDutchPay_FormClosing(object sender, FormClosingEventArgs e)
{
m_sPaying = "0";
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", lblTitle.Text);
}
///
/// 폼 컨트롤 초기화
///
private void InitControl()
{
try
{
// 이미지 로딩 처리
//this.Size = new Size(800, 544);
//this.Location = new Point(110, 173);
picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.POP_SIZE_800X600);
FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT);
FormManager.SetTextBoxGlobalInfo(this, m_cPosStatus.Global.m_stCultureMaster.nGroupingDigits, m_cPosStatus.Global.m_stCultureMaster.strGroupingSymbol
, m_cPosStatus.Global.m_stCultureMaster.nDecimalDigits, m_cPosStatus.Global.m_stCultureMaster.strDecimalSymbol);
btnExit.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BTN_CLOSE);
if (btnExit.Image != null) btnExit.Text = "";
btnAllUp.DefaultImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.NAVIBTN_170X48_UP1_BASIC);
btnAllUp.ClickImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.NAVIBTN_170X48_UP1_PRESS);
btnAllUp.BorderStyle = BorderStyle.None;
if (btnAllUp.DefaultImage != null) btnAllUp.Text = "";
btnAllDw.DefaultImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.NAVIBTN_170X48_DOWN1_BASIC);
btnAllDw.ClickImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.NAVIBTN_170X48_DOWN1_PRESS);
btnAllDw.BorderStyle = BorderStyle.None;
if (btnAllDw.DefaultImage != null) btnAllDw.Text = "";
btnBudleUp.DefaultImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.NAVIBTN_170X48_UP1_BASIC);
btnBudleUp.ClickImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.NAVIBTN_170X48_UP1_PRESS);
btnBudleUp.BorderStyle = BorderStyle.None;
if (btnBudleUp.DefaultImage != null) btnBudleUp.Text = "";
btnBudleDw.DefaultImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.NAVIBTN_170X48_UP1_BASIC);
btnBudleDw.ClickImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.NAVIBTN_170X48_UP1_PRESS);
btnBudleDw.BorderStyle = BorderStyle.None;
if (btnBudleDw.DefaultImage != null) btnBudleDw.Text = "";
btnAddOne.DefaultImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_RIGHT_ARROW_BASIC);
btnAddOne.ClickImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_RIGHT_ARROW_PRESS);
btnAddOne.BorderStyle = BorderStyle.None;
if (btnAddOne.DefaultImage != null) btnAddOne.Text = "";
btnDelOne.DefaultImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_LEFT_ARROW_BASIC);
btnDelOne.ClickImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_LEFT_ARROW_PRESS);
btnDelOne.BorderStyle = BorderStyle.None;
if (btnDelOne.DefaultImage != null) btnDelOne.Text = "";
btnAddAll.DefaultImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_RIGHT_ALL_ARROW_BASIC);
btnAddAll.ClickImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_RIGHT_ALL_ARROW_PRESS);
btnAddAll.BorderStyle = BorderStyle.None;
if (btnAddAll.DefaultImage != null) btnAddAll.Text = "";
btnDelAll.DefaultImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_LEFT_ALL_ARROW_BASIC);
btnDelAll.ClickImage = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BUTTON_LEFT_ALL_ARROW_PRESS);
btnDelAll.BorderStyle = BorderStyle.None;
if (btnDelAll.DefaultImage != null) btnDelAll.Text = "";
lblTitle.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0438);
lblPayAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0374); // 선택금액
lblSaleAmt.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0348); // 판매금액
txtSaleAmt.Text = "0";
txtPayAmt.Text = "0";
txtSaleAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RemainPayAmt); // 선택금액
DataGridSetting(0); // 그리드 초기화
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region Control Event
#region 버튼 입력 처리
///
/// 버튼 입력 처리
///
///
///
private void btnProc_Click(object sender, EventArgs e)
{
string sRet = UserCom.RST_ERR;
try
{
if (bNotDoubleClik) return;
bNotDoubleClik = true;
if ((UI.CsmButton)sender == btnAllUp) // 상단 그리드 Up
{
cglAlliTem.CsmGridScroll("UP");
}
else if ((UI.CsmButton)sender == btnAllDw) // 상단 그리드 Down
{
cglAlliTem.CsmGridScroll("DOWN");
}
else if ((UI.CsmButton)sender == btnBudleUp) // 하단 그리드 Up
{
cgdBundleiTem.CsmGridScroll("UP");
}
else if ((UI.CsmButton)sender == btnBudleDw) // 하단 그리드 Down
{
cgdBundleiTem.CsmGridScroll("DOWN");
}
else if (((Cosmos.UI.CsmButton)sender) == btnDelAll) // 전체 삭제
{
sRet = DataGridSetting(3);
bNotDoubleClik = false;
if (sRet != UserCom.RST_OK) return;
}
else if (((Cosmos.UI.CsmButton)sender) == btnAddAll) // 전체 이동
{
sRet = DataGridSetting(1);
bNotDoubleClik = false;
if (sRet != UserCom.RST_OK) return;
}
else if (((Cosmos.UI.CsmButton)sender) == btnAddOne) // 1개 이동
{
//할인 체크
sRet = DcAmtCheck(cglAlliTem);
if (sRet == UserCom.RST_OK)
{
sRet = DataGridSetting(2);
}
else if (sRet == UserCom.RST_RETRY)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0681) == true)
{
sRet = DataGridSetting(1);
}
}
bNotDoubleClik = false;
if (sRet != UserCom.RST_OK) return;
}
else if (((Cosmos.UI.CsmButton)sender) == btnDelOne) // 1개 삭제
{
//할인 체크
sRet = DcAmtCheck(cgdBundleiTem);
if (sRet == UserCom.RST_OK)
{
sRet = DataGridSetting(4);
}
else if (sRet == UserCom.RST_RETRY)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0681) == true)
{
sRet = DataGridSetting(3);
}
}
//sRet = DataGridSetting(4);
bNotDoubleClik = false;
if (sRet != UserCom.RST_OK) return;
}
else if (((Cosmos.UI.CsmButton)sender) == btnPay) // 결제
{
if (cgdBundleiTem.CsmGridRowsCount == 0)
{
bNotDoubleClik = false;
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0396);
//메세지
return;
}
sRet = SetPay();
bNotDoubleClik = false;
if (sRet != UserCom.RST_OK) return;
this.DialogResult = DialogResult.OK;
this.Close();
//txtEditBox_EditBoxKeyDownEvent(null, PosKey.MENU_KEY.ESC_PREVIOUS);
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
bNotDoubleClik = false;
}
bNotDoubleClik = false;
}
///
/// 닫기
///
///
///
private void btnExit_Click(object sender, EventArgs e)
{
try
{
// 진행중이고 후불이면 못나가게 임시로 막음!
if (m_sPaying == "1" && m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0284));
return;
}
//더치페이 관련 함수들 초기화!
m_cPosStatus.Sale.DutchPayFlg = "";
m_cTrnStatus.Head.AmtDutchPayYn = "";
m_cPosStatus.Sale.PayingDutchFlag = "";
this.DialogResult = DialogResult.Cancel;
this.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);
}
}
#endregion
#endregion Control Event
#region User Method
#region 그리드 설정 및 사용
private string DataGridSetting(int index)
{
string sRet = UserCom.RST_ERR;
try
{
switch (index)
{
case 0:
{
// ------------------------------------------------------------------------------------------------------------------------
// 상단 그리드
// ------------------------------------------------------------------------------------------------------------------------
// 초기화
cglAlliTem.CsmGridColumnHeadersFont = new Font(m_cPosStatus.Base.FONT, 10, cglAlliTem.CsmGridColumnHeadersFont.Style);
cglAlliTem.CsmGridColumnHeadersVisible = true; //DataGridView 자체의 컬럼 헤더 Visible 여부
cglAlliTem.CsmGridColumnHeadersHeight = 37; //DataGridView 자체의 컬럼 헤더 높이
cglAlliTem.CsmGridRowsHeight = 35;
cglAlliTem.CsmGridColumnCount = 11; //그리드의 컬럼 수
cglAlliTem.CsmGridShowPageRowsCount = 9; //그리드의 한 화면에 보이는 로우수
cglAlliTem.CsmGridSetHeaderBackColor(236, 238, 239); //그리드 헤더 배경색
cglAlliTem.CsmGridDefaultRowBackColor = Color.FromArgb(255, 255, 255); //그리드 홀수(Default)행의 배경색 지정
cglAlliTem.CsmGridAlternateRowBackColor = Color.FromArgb(251, 253, 255); //그리드 짝수(Alternate)행의 배경색 지정
cglAlliTem.CsmGridBackGroundColor = Color.FromArgb(251, 253, 255); //기본 백그라운드 컬러
cglAlliTem.CsmGridHighlightColor = Color.FromArgb(255, 251, 211); //그리드 선택 백 컬러
cglAlliTem.CsmGridHighlightTextColor = Color.Black; //그리드 선택 글자 컬러
//각 컬럼별 이름 지정
cglAlliTem.CsmGridColumnName(0, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0014));
cglAlliTem.CsmGridColumnName(1, "");
cglAlliTem.CsmGridColumnName(2, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0015));
cglAlliTem.CsmGridColumnName(3, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0017));
cglAlliTem.CsmGridColumnName(4, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0348));
cglAlliTem.CsmGridColumnShowHide(5, false);
cglAlliTem.CsmGridColumnShowHide(6, false);
cglAlliTem.CsmGridColumnShowHide(7, false);
cglAlliTem.CsmGridColumnShowHide(8, false);
cglAlliTem.CsmGridColumnShowHide(9, false);
cglAlliTem.CsmGridColumnShowHide(10, false);
//컬럼넓이 지정(406)
cglAlliTem.CsmGridSetColumnWidth(new int[] { 42, 0, 140, 58, 100, 0, 0, 0, 0, 0, 0 });
//컬럼 정렬 0:왼쪽, 1:가운데, 2:오른쪽
cglAlliTem.CsmGridAlignment(new int[] { 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2 });
m_dtcglAlliTem = new DataTable("GRID_LIST");
m_dtcglAlliTem.Columns.Add(new DataColumn("NO", typeof(string)));
m_dtcglAlliTem.Columns.Add(new DataColumn("ITEMCD", typeof(string)));
m_dtcglAlliTem.Columns.Add(new DataColumn("ITEMNM", typeof(string)));
m_dtcglAlliTem.Columns.Add(new DataColumn("QTY", typeof(string)));
m_dtcglAlliTem.Columns.Add(new DataColumn("AMOUNT", typeof(string)));
m_dtcglAlliTem.Columns.Add(new DataColumn("ITEM_DIV", typeof(string)));
m_dtcglAlliTem.Columns.Add(new DataColumn("DC_PRMT_YN", typeof(string)));
m_dtcglAlliTem.Columns.Add(new DataColumn("COST", typeof(string)));
m_dtcglAlliTem.Columns.Add(new DataColumn("SEQ", typeof(string)));
m_dtcglAlliTem.Columns.Add(new DataColumn("UPDATE", typeof(string)));
m_dtcglAlliTem.Columns.Add(new DataColumn("TOT_DC_AMT", typeof(string)));
m_dtcglAlliTem.Clear();
// ------------------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------------------
// 하단 그리드
// ------------------------------------------------------------------------------------------------------------------------
// 초기화
cgdBundleiTem.CsmGridColumnHeadersFont = new Font(m_cPosStatus.Base.FONT, 10, cgdBundleiTem.CsmGridColumnHeadersFont.Style);
//DataGridView 자체의 컬럼 헤더 Visible 여부
cgdBundleiTem.CsmGridColumnHeadersVisible = true;
//DataGridView 자체의 컬럼 헤더 높이
cgdBundleiTem.CsmGridColumnHeadersHeight = 37;
cgdBundleiTem.CsmGridRowsHeight = 35;
//그리드의 컬럼 수
cgdBundleiTem.CsmGridColumnCount = 11;
//그리드의 한 화면에 보이는 로우수
cgdBundleiTem.CsmGridShowPageRowsCount = 9;
//그리드 홀수(Default)/짝수(Alternate)행의 배경색 지정
cgdBundleiTem.CsmGridDefaultRowBackColor = Color.White;
cgdBundleiTem.CsmGridAlternateRowBackColor = Color.Ivory;
//각 컬럼별 이름 지정
cgdBundleiTem.CsmGridColumnName(0, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0014));
cgdBundleiTem.CsmGridColumnName(1, "");
cgdBundleiTem.CsmGridColumnName(2, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0015));
cgdBundleiTem.CsmGridColumnName(3, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0017));
cgdBundleiTem.CsmGridColumnName(4, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0348));
cgdBundleiTem.CsmGridColumnShowHide(5, false);
cgdBundleiTem.CsmGridColumnShowHide(6, false);
cgdBundleiTem.CsmGridColumnShowHide(7, false);
cgdBundleiTem.CsmGridColumnShowHide(8, false);
cgdBundleiTem.CsmGridColumnShowHide(9, false);
cgdBundleiTem.CsmGridColumnShowHide(10, false);
//컬럼넓이 지정(406)
cgdBundleiTem.CsmGridSetColumnWidth(new int[] { 42, 0, 140, 58, 100, 0, 0, 0, 0, 0, 0 });
//컬럼 정렬 0:왼쪽, 1:가운데, 2:오른쪽
cgdBundleiTem.CsmGridAlignment(new int[] { 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2 });
m_dtcglBundleiTem = new DataTable("GRID_BUNDLE_LIST");
m_dtcglBundleiTem.Columns.Add(new DataColumn("NO", typeof(string)));
m_dtcglBundleiTem.Columns.Add(new DataColumn("ITEMCD", typeof(string)));
m_dtcglBundleiTem.Columns.Add(new DataColumn("ITEMNM", typeof(string)));
m_dtcglBundleiTem.Columns.Add(new DataColumn("QTY", typeof(string)));
m_dtcglBundleiTem.Columns.Add(new DataColumn("AMOUNT", typeof(string)));
m_dtcglBundleiTem.Columns.Add(new DataColumn("ITEM_DIV", typeof(string)));
m_dtcglBundleiTem.Columns.Add(new DataColumn("DC_PRMT_YN", typeof(string)));
m_dtcglBundleiTem.Columns.Add(new DataColumn("COST", typeof(string)));
m_dtcglBundleiTem.Columns.Add(new DataColumn("SEQ", typeof(string)));
m_dtcglBundleiTem.Columns.Add(new DataColumn("UPDATE", typeof(string)));
m_dtcglBundleiTem.Columns.Add(new DataColumn("TOT_DC_AMT", typeof(string)));
m_dtcglBundleiTem.Clear();
cgdBundleiTem.CsmGridDataSource = m_dtcglBundleiTem;
// ------------------------------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------------------------------
// 상품정보
// ------------------------------------------------------------------------------------------------------------------------
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iLoop = 0; iLoop < aSaleItem.Count; iLoop++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iLoop];
if (cSaleItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL || cSaleItem.CANCEL_DIV_MAIN != PosConst.CANCEL_DIV.NORMAL) continue; // 지정취소
DataRow drNewRow = m_dtcglAlliTem.NewRow();
//if (m_sPaying == "1")
//{
// //결제 진행 중일 경우 TOT_QTY에서 현재 수량을 빼서 수량을 만들어준다.
// cSaleItem.SALE_QTY = cSaleItem.DUTCH_PAY_TOTQTY - cSaleItem.SALE_QTY;
//}
//else
//{
cSaleItem.DUTCH_PAY_TOTQTY = cSaleItem.SALE_QTY;
//}
cSaleItem.DUTCH_PAY_SELQTY = 0;
if (cSaleItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.OPT_MENU || cSaleItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_DETL)
{
drNewRow["NO"] = "";
}
else
{
drNewRow["NO"] = SelectMaxNo(m_dtcglAlliTem).ToString();
}
drNewRow["ITEMCD"] = cSaleItem.ITEM_PLU_CD; // 상품코드
drNewRow["ITEMNM"] = cSaleItem.ITEM_NAME; // 상품명
drNewRow["QTY"] = m_cPosStatus.Global.NumericToQuantity(cSaleItem.SALE_QTY); // 수량
drNewRow["AMOUNT"] = m_cPosStatus.Global.NumericTOCurrency(cSaleItem.BILL_AMT); // 판매금액
drNewRow["ITEM_DIV"] = cSaleItem.ITEM_DIV; // 부가상품
drNewRow["DC_PRMT_YN"] = cSaleItem.DC_PRMT_YN; // 할인불가
drNewRow["COST"] = cSaleItem.SALE_PRC; // 단가
drNewRow["SEQ"] = iLoop; // Seq
drNewRow["UPDATE"] = ""; // 변경구분
drNewRow["TOT_DC_AMT"] = cSaleItem.TOT_DC_AMT; // 할인금액
m_dtcglAlliTem.Rows.Add(drNewRow);
}
cglAlliTem.CsmGridDataSource = m_dtcglAlliTem;
cglAlliTem.CsmGridSelectRow(0);
// ------------------------------------------------------------------------------------------------------------------------
break;
}
case 1:
{
// 추가(수량전체)
int iRow = cglAlliTem.CsmGridSelectedRowIndex;
if (cglAlliTem.CsmGridRowsCount <= 0) break;
if (m_dtcglAlliTem.Rows[iRow]["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.OPT_MENU || m_dtcglAlliTem.Rows[iRow]["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.SET_DETL) break;
sRet = GridDataSet(cglAlliTem, m_dtcglAlliTem, cgdBundleiTem, m_dtcglBundleiTem, true, iRow, false);
if (sRet != UserCom.RST_OK) return sRet;
break;
}
case 2:
{
// 추가(수량1개)
int iRow = cglAlliTem.CsmGridSelectedRowIndex;
if (cglAlliTem.CsmGridRowsCount <= 0) break;
if (m_dtcglAlliTem.Rows[iRow]["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.OPT_MENU || m_dtcglAlliTem.Rows[iRow]["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.SET_DETL) break;
sRet = GridDataSet(cglAlliTem, m_dtcglAlliTem, cgdBundleiTem, m_dtcglBundleiTem, false, iRow, false);
if (sRet != UserCom.RST_OK) return sRet;
break;
}
case 3:
{
// 취소(전체)
int iRow = cgdBundleiTem.CsmGridSelectedRowIndex;
if (cgdBundleiTem.CsmGridRowsCount <= 0) break;
if (m_dtcglBundleiTem.Rows[iRow]["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.OPT_MENU || m_dtcglBundleiTem.Rows[iRow]["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.SET_DETL) break;
sRet = GridDataSet(cgdBundleiTem, m_dtcglBundleiTem, cglAlliTem, m_dtcglAlliTem, true, iRow, true);
if (sRet != UserCom.RST_OK) return sRet;
break;
}
case 4:
{
//취소(1개)
int iRow = cgdBundleiTem.CsmGridSelectedRowIndex;
if (cgdBundleiTem.CsmGridRowsCount <= 0) break;
if (m_dtcglBundleiTem.Rows[iRow]["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.OPT_MENU || m_dtcglBundleiTem.Rows[iRow]["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.SET_DETL) break;
sRet = GridDataSet(cgdBundleiTem, m_dtcglBundleiTem, cglAlliTem, m_dtcglAlliTem, false, iRow, true);
if (sRet != UserCom.RST_OK) return sRet;
break;
}
}
sRet = 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);
sRet = UserCom.RST_ERR;
}
return sRet;
}
///
/// 그리드 No 최대값 조회
///
///
///
private string SelectMaxNo(DataTable dtData)
{
double nGetData = 0;
double nMaxNo = 0;
string sRet = "";
try
{
if (dtData.Rows.Count <= 0) sRet = "1";
for (int iLoop = 0; iLoop < dtData.Rows.Count; iLoop++)
{
DataRow dvDataRow = dtData.Rows[iLoop];
if (dvDataRow["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.OPT_MENU || dvDataRow["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.SET_DETL) continue;
nGetData = m_cDataService.DoubleParse(dvDataRow["NO"].ToString());
if (nGetData > nMaxNo)
{
nMaxNo = nGetData;
sRet = (nMaxNo + 1).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);
}
return sRet;
}
///
/// 그리드 특정 Row 추가/삭제
///
///
///
///
///
///
///
///
///
private string GridDataSet(Cosmos.UI.CsmGrid cdgSrc, DataTable dtSrc, Cosmos.UI.CsmGrid cdgTaget, DataTable dtTarget, bool AllMove, int iRow, bool bDelete)
{
string sRet = UserCom.RST_ERR;
double nPayAmount = 0;
try
{
if (cdgSrc.CsmGridRowsCount <= 0) return sRet;
// 코드 체크
if (cdgSrc.CsmGridGetCell(iRow, 1).ToString().Trim() == "") return sRet;
DataRow drNewRow = dtTarget.NewRow();
if (cdgSrc.CsmGridGetCell(iRow, 5) == ItemConst.PLU_ITEM_DIV.OPT_MENU || cdgSrc.CsmGridGetCell(iRow, 5) == ItemConst.PLU_ITEM_DIV.SET_DETL)
{
drNewRow["NO"] = "";
}
else
{
drNewRow["NO"] = SelectMaxNo(dtTarget).ToString();
}
drNewRow["ITEMCD"] = cdgSrc.CsmGridGetCell(iRow, 1);
drNewRow["ITEMNM"] = cdgSrc.CsmGridGetCell(iRow, 2);
drNewRow["ITEM_DIV"] = cdgSrc.CsmGridGetCell(iRow, 5);
drNewRow["DC_PRMT_YN"] = cdgSrc.CsmGridGetCell(iRow, 6);
drNewRow["COST"] = cdgSrc.CsmGridGetCell(iRow, 7);
drNewRow["SEQ"] = cdgSrc.CsmGridGetCell(iRow, 8);
drNewRow["UPDATE"] = "U";
drNewRow["TOT_DC_AMT"] = cdgSrc.CsmGridGetCell(iRow, 10);
dtSrc.Rows[iRow]["UPDATE"] = "U";
if (AllMove != true)
{
// 수량1개
long nQty = m_cDataService.LongParse(dtSrc.Rows[iRow]["QTY"].ToString());
double nAmount = m_cDataService.DoubleParse(dtSrc.Rows[iRow]["AMOUNT"].ToString());
double nDanga = m_cDataService.DoubleParse(dtSrc.Rows[iRow]["COST"].ToString());
if (nQty <= 1)
{
// 삭제
dtSrc.Rows.RemoveAt(iRow);
AllMove = true; //부모가 1개일때는 다 넘겨주자!
}
else
{
// 원시 수량 1차감
nQty = nQty - 1;
dtSrc.Rows[iRow]["QTY"] = m_cPosStatus.Global.NumericToQuantity(nQty);
dtSrc.Rows[iRow]["AMOUNT"] = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleMultiplication(nQty, nDanga)); // 판매금액 재계산
// 타켓 수량 1로 설정
nQty = 1;
drNewRow["SEQ"] = ""; // 신규생성
// 다음 Row 세트자식/부가메뉴
iRow++;
}
drNewRow["QTY"] = m_cPosStatus.Global.NumericToQuantity(nQty);
drNewRow["AMOUNT"] = m_cPosStatus.Global.NumericTOCurrency(CmUtil.DoubleMultiplication(nQty, nDanga));
cdgSrc.CsmGridDataSource = dtSrc;
cdgSrc.CsmGridSelectRow(iRow);
}
else
{
// 전체
drNewRow["QTY"] = cdgSrc.CsmGridGetCell(iRow, 3);
drNewRow["AMOUNT"] = cdgSrc.CsmGridGetCell(iRow, 4);
// 삭제
dtSrc.Rows.RemoveAt(iRow);
cdgSrc.CsmGridDataSource = dtSrc;
cdgSrc.CsmGridSelectRow(iRow);
}
// 추가
dtTarget.Rows.Add(drNewRow);
cdgTaget.CsmGridDataSource = dtTarget;
cdgTaget.CsmGridSelectRow(cdgTaget.CsmGridRowsCount);
// 부가메뉴 체크
if (cdgSrc.CsmGridRowsCount > iRow)
{
if (dtSrc.Rows[iRow]["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.OPT_MENU || dtSrc.Rows[iRow]["ITEM_DIV"].ToString() == ItemConst.PLU_ITEM_DIV.SET_DETL)
sRet = GridDataSet(cdgSrc, dtSrc, cdgTaget, dtTarget, AllMove, iRow, bDelete);
}
// 선택금액
if (dtTarget.Rows.Count > 0)
{
for (int iLoop = 0; iLoop < dtTarget.Rows.Count; iLoop++)
{
nPayAmount = CmUtil.DoubleAdd(nPayAmount, m_cDataService.DoubleParse(dtTarget.Rows[iLoop]["AMOUNT"].ToString()));
}
}
else
{
for (int iLoop = 0; iLoop < dtSrc.Rows.Count; iLoop++)
{
nPayAmount = CmUtil.DoubleAdd(nPayAmount, m_cDataService.DoubleParse(dtSrc.Rows[iLoop]["AMOUNT"].ToString()));
}
}
if ((Cosmos.UI.CsmGrid)cdgSrc == cglAlliTem)
{
// 등록금액
txtSaleAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RemainPayAmt - nPayAmount);
// 선택금액
txtPayAmt.Text = m_cPosStatus.Global.NumericTOCurrency(nPayAmount);
}
else
{
// 등록금액
txtSaleAmt.Text = m_cPosStatus.Global.NumericTOCurrency(nPayAmount);
// 선택금액
txtPayAmt.Text = m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RemainPayAmt - nPayAmount);
}
sRet = 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);
sRet = UserCom.RST_ERR;
}
return sRet;
}
#endregion
///
/// 더치페이 결제
///
///
private string SetPay()
{
string sRet = UserCom.RST_ERR;
try
{
// 상품정보
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
if (cSaleItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL || cSaleItem.CANCEL_DIV_MAIN != PosConst.CANCEL_DIV.NORMAL) continue;
cSaleItem.DUTCH_PAY_CAN_DIV = cSaleItem.CANCEL_DIV;
cSaleItem.DUTCH_PAY_MAIN_CAN_DIV = cSaleItem.CANCEL_DIV_MAIN;
cSaleItem.CANCEL_DIV = "1";
}
// ---------------------------------------------------------------------------------------------------------
// 타켓 업데이트
// ---------------------------------------------------------------------------------------------------------
for (int iRow = 0; iRow < m_dtcglBundleiTem.Rows.Count; iRow++)
{
for (int iRow2 = 0; iRow2 < aSaleItem.Count; iRow2++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow2];
if (cSaleItem.DUTCH_PAY_CAN_DIV != PosConst.CANCEL_DIV.NORMAL || cSaleItem.DUTCH_PAY_MAIN_CAN_DIV != PosConst.CANCEL_DIV.NORMAL) continue;
if (m_dtcglBundleiTem.Rows[iRow]["ITEMCD"].ToString() == cSaleItem.ITEM_PLU_CD)
{
if (cSaleItem.SALE_QTY >= cSaleItem.DUTCH_PAY_SELQTY + m_cDataService.LongParse(m_dtcglBundleiTem.Rows[iRow]["QTY"].ToString()))
{
cSaleItem.DUTCH_PAY_SELQTY = cSaleItem.DUTCH_PAY_SELQTY + m_cDataService.LongParse(m_dtcglBundleiTem.Rows[iRow]["QTY"].ToString());
cSaleItem.CANCEL_DIV = ItemConst.PAY_CANCEL_DIV.NORMAL;
break;
}
}
}
}
for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
if (cSaleItem.DUTCH_PAY_CAN_DIV != PosConst.CANCEL_DIV.NORMAL || cSaleItem.DUTCH_PAY_MAIN_CAN_DIV != PosConst.CANCEL_DIV.NORMAL) continue;
if (cSaleItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.NORMAL)
{
cSaleItem.SALE_QTY = cSaleItem.DUTCH_PAY_SELQTY;
//break;
}
}
m_cPluService.ItemAmountExeccute(true, true);
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayItem(1, false);
sRet = 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;
}
///
/// 선택 그리드 할인 체크
///
///
///
private string DcAmtCheck(Cosmos.UI.CsmGrid csmGrid)
{
string sRet = UserCom.RST_ERR;
//UserCom.RST_ERR 에러
//UserCom.RST_OK 정상
//UserCom.RST_IGNORE
//UserCom.RST_RETRY 할일적용변경
try
{
int iRow = csmGrid.CsmGridSelectedRowIndex;
if (csmGrid.CsmGridRowsCount <= 0) return sRet;
if (CmUtil.DoubleParse(csmGrid.CsmGridGetCell(iRow, 10).ToString()) > 0) return UserCom.RST_RETRY;
sRet = 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;
}
#endregion User Method
#region DeviceEvent 관련
///
/// DeviceEvent 관련
///
///
///
///
///
public void OnDeviceEvent(string sDevice, string sData1, string sData2, string sData3)
{
try
{
switch (sDevice)
{
case PosConst.OPOS_DEVICE.MSR:
this.Invoke(new EventHandler(OnMSREvent));
break;
case PosConst.OPOS_DEVICE.SCANNER:
this.Invoke(new EventHandler(OnScannerEvent));
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);
}
}
///
/// MSR Event
///
///
///
private void OnMSREvent(object source, EventArgs e)
{
}
///
/// 스캐너 이벤트 처리
///
///
///
private void OnScannerEvent(object source, EventArgs e)
{
}
#endregion
}
}