spc-kiosk-pb/Window/WinSale/frmMultiItem.cs

272 lines
13 KiB
C#
Raw Normal View History

2019-06-16 05:12:09 +00:00
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;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 선택상품할인
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
//************************************************************************************************
// 변경 이력 : 바코드 중복 처리
//------------------------------------------------------------------------------------------------
// - 작 업 자 : 서광원B
// - 작업일자 : 2017.11.10
// - 작업분류 : 2017.10.28 정보운영 판매 바코드 인식
// - 화면설명 : 만약 사용자가 입력한 바코드 정보가 여러개일 경우
// 사용자가 원하는 상품을 선택할 수 있도록 동일한 바코드의 상품을 표시하는 화면
//************************************************************************************************
namespace Cosmos.Win
{
public partial class frmMultiItem : Form
{
#region
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 IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스
private IDataProcessUs m_cDataService = null;
private ISalePluItemUs m_cPluService = null; // 판매 등록 관리
// 전달받은 데이터 설정에 필요한 데이터 테이블 선언 -----
private DataTable _m_dtItemInit = null; // 전달받은 데이터 리스트
private DataTable m_dtItemInit = null; // 조회 데이터 리스트
// 사용자가 선택한 그리드 행번호(초기값: -1) -----
private int intSelectRow = -1;
// 사용자가 선택한 매장코드 -----
public string strStorCD = "";
// 사용자가 선택한 상품코드 -----
public string strSelectItemCD = "";
#endregion
#region & &
public frmMultiItem()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
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_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);
}
public frmMultiItem(DataTable _dtDataInfo)
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
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_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);
//---------------------------------------------------------
// 이전 폼에서 전달받은 데이터 테이블을 폼 변수에 저장한다.
//---------------------------------------------------------
#region .
_m_dtItemInit = _dtDataInfo.Copy(); // 전달받은 데이터 테이블을 저장
m_dtItemInit = new DataTable("INIT"); // 타켓 데이터 테이블 설정
m_dtItemInit.Columns.Add(new DataColumn("NO", typeof(string)));
m_dtItemInit.Columns.Add(new DataColumn("STOR_CD", typeof(string)));
m_dtItemInit.Columns.Add(new DataColumn("ITEM_CD", typeof(string)));
m_dtItemInit.Columns.Add(new DataColumn("ITEM_NM", typeof(string)));
m_dtItemInit.Columns.Add(new DataColumn("SALE_AMT", typeof(string)));
m_dtItemInit.Clear();
#endregion
}
private void frmMultiItem_Load(object sender, EventArgs e)
{
// 컨트롤 초기화 함수 호출 -----
InitControl();
// LOG Write -----
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
}
private void frmMultiItem_FormClosing(object sender, FormClosingEventArgs e)
{
// LOG Write -----
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", lblTitle.Text);
}
/// <summary>
/// 폼 컨트롤 초기화
/// </summary>
private void InitControl()
{
// 그리드 초기화 함수 호출 -----
SetListColumn();
//=====================================
// 만약 전달받은 데이터가 존재할 경우
// 전달받은 데이터를 그리드에 표시한다.
//=====================================
#region .
if (_m_dtItemInit != null && _m_dtItemInit.Rows.Count > 0)
{
for (int i = 0; i < _m_dtItemInit.Rows.Count; i++)
{
DataRow dr = m_dtItemInit.NewRow();
dr["NO"] = i + 1;
dr["STOR_CD"] = _m_dtItemInit.Rows[i]["STOR_CD"].ToString();
dr["ITEM_CD"] = _m_dtItemInit.Rows[i]["ITEM_CD"].ToString();
dr["ITEM_NM"] = _m_dtItemInit.Rows[i]["ITEM_NM"].ToString();
long _lngSaleAmt = Convert.ToInt32(_m_dtItemInit.Rows[i]["SALE_AMT"]);
dr["SALE_AMT"] = _lngSaleAmt.ToString("n0");
m_dtItemInit.Rows.Add(dr);
}
// 전달받은 데이터를 그리드에 표시한다. -----
dgvData.CsmGridDataSource = m_dtItemInit;
}
#endregion
// 그리드 클릭 이벤트 호출(초기화) -----
dgvData_GridClickEvent(null, "0");
}
private void SetListColumn()
{
try
{
// 간이영수증 정보
dgvData.CsmGridColumnHeadersVisible = true; //DataGridView 자체의 컬럼 헤더 Visible 여부
dgvData.CsmGridColumnHeadersHeight = 37; //DataGridView 자체의 컬럼 헤더 높이
dgvData.CsmGridColumnHeadersFont = new Font(m_cPosStatus.Base.FONT, 12, FontStyle.Bold); //DataGridView 자체의 컬럼 헤더 폰트
dgvData.CsmGridRowsHeight = 35;
dgvData.CsmGridColumnCount = 5; //그리드의 컬럼수(5)
dgvData.CsmGridShowPageRowsCount = 4; //그리드의 한 화면에 보이는 로우수
dgvData.CsmGridSetHeaderBackColor(236, 238, 239); //그리드 헤더 배경색
dgvData.CsmGridDefaultRowBackColor = Color.FromArgb(255, 255, 255); //그리드 홀수(Default)행의 배경색 지정
dgvData.CsmGridAlternateRowBackColor = Color.FromArgb(251, 253, 255); //그리드 짝수(Alternate)행의 배경색 지정
dgvData.CsmGridBackGroundColor = Color.FromArgb(251, 253, 255); //기본 백그라운드 컬러
dgvData.CsmGridHighlightColor = Color.FromArgb(255, 251, 211); //그리드 선택 백 컬러
dgvData.CsmGridHighlightTextColor = Color.Black; //그리드 선택 글자 컬러
dgvData.CsmGridSetColumnWidth(new int[] { 30, 100, 100, 150, 100 }); //컬럼넓이 지정(480)
dgvData.CsmGridAlignment(new int[] { 1, 1, 1, 1, 2 }); //컬럼 정렬 0:왼쪽, 1:가운데, 2:오른쪽
//각 컬럼별 이름 지정
dgvData.CsmGridColumnName(0, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0014));
dgvData.CsmGridColumnName(1, "매장코드");
dgvData.CsmGridColumnName(2, "상품코드");
dgvData.CsmGridColumnName(3, "상품명");
dgvData.CsmGridColumnName(4, "단가");
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
#endregion
#region
/// <summary>
/// 선택
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSelection_Click(object sender, EventArgs e)
{
if (intSelectRow > -1)
{
// 사용자가 선택한 매장코드 저장 -----
string _strStorCD = m_dtItemInit.Rows[intSelectRow]["STOR_CD"].ToString();
strStorCD = _strStorCD;
// 사용자가 선택한 상품코드 저장 -----
string _strSelectItemCD = m_dtItemInit.Rows[intSelectRow]["ITEM_CD"].ToString();
strSelectItemCD = _strSelectItemCD;
//------------
// 리턴값 설정
//------------
this.DialogResult = DialogResult.OK;
}
}
/// <summary>
/// 닫기
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExit_Click(object sender, EventArgs e)
{
// 리턴값 설정 -----
this.DialogResult = DialogResult.Cancel;
this.Close();
}
#endregion
#region
/// <summary>
/// 조회 그리드 클릭 이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgvData_GridClickEvent(object sender, string rowIndex)
{
// 사용자가 선택한 행 값(intSelectRow)을 저장한다. -----
if (dgvData.CsmGridRowsCount == 0) return;
intSelectRow = Convert.ToInt16(rowIndex); // 행 값(intSelectRow) 저장
}
#endregion
#region /
/// <summary>
/// 조회 그리드 업/다운 클릭 이벤트
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSelProc_Click(object sender, EventArgs e)
{
if ((UI.CsmButton)sender == btnUp)
{
dgvData.CsmGridScroll("UP");
}
else if ((UI.CsmButton)sender == btnDw)
{
dgvData.CsmGridScroll("DOWN");
}
}
#endregion
}
}