spc-kiosk-pb/Kiosk/Common/SPC.Kiosk.DataHelper/PosDataService.cs
2019-06-16 14:12:09 +09:00

724 lines
35 KiB
C#

using System;
using System.Linq;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Runtime.InteropServices;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.Service;
using Cosmos.Win;
using Cosmos.CommonManager;
using System.Timers;
//using System.Threading;
using SPC.Kiosk.Common;
using SPC.Kiosk.PB.Model;
using System.Collections.ObjectModel;
namespace SPC.Kiosk.DataHelper
{
public class PosDataService : IDisposable
{
#region [ Members ]
private SManager sManager = null; // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = null; // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus = null; // 기본정보 참조
private TranStatus m_cTrnStatus = null; // 거래정보 참조
protected IDataCommonUs m_cDataCommon = null;
private IDataProcessUs m_cDataService = null; // 거래데이터 합계금액 계산 및 관리
private SaleMainProcess m_cSaleMainProc = null; // 판매화면 기능 관리
/// <summary>
/// POS 초기화 필요 유무
/// </summary>
public bool NeedInitModule { get; set; }
#endregion Members
#region [ Ctor & Dispose ]
/// <summary>
/// Ctor
/// </summary>
public PosDataService()
{
try
{
sManager = new SManager();
StateObject = (StateServer)StateServer.GetInstance();
if (!NeedInitModule)
{
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보
m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE);
m_cSaleMainProc = new SaleMainProcess();
}
}
catch (Exception ex)
{
CommonLog.ErrorLogWrite(this, "Ctor", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
}
}
/// <summary>
/// Dispose
/// </summary>
public void Dispose()
{
sManager = null; // 이 객체를 통해 업무 Service 호출
StateObject = null; // StateObject : StateServer Object (객체)
m_cPosStatus = null; // 기본정보 참조
m_cTrnStatus = null; // 거래정보 참조
m_cDataCommon = null;
}
public void DisposePos()
{
//sManager = null;
//StateObject = null; // StateObject : StateServer Object (객체)
m_cTrnStatus.Sale.Clear();
m_cTrnStatus.Head.Clear();
m_cDataService.InitTranHeader();
m_cDataService.DeleteTranItem();
}
#endregion Ctor & Dispose
#region [ Methods ]
/// <summary>
/// 점포명 조회
/// </summary>
/// <returns></returns>
public string StoreName()
{
if (NeedInitModule) return string.Empty;
string result = string.Empty;
try
{
result = CmUtil.GetDataRowStr(PosMstManager.GetMstStore(), PosMst.MST_STORE.DATA.STORNM);
}
catch (Exception ex)
{
CommonLog.ErrorLogWrite(this, "StoreName()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
result = string.Empty;
}
return result;
}
public void GetCashBill(ref double _cashBill, ref double _taxbill)
{
_cashBill = m_cDataService.GetCashAmt();
if (_cashBill > 0)
{
_taxbill = m_cDataService.GetPaymentAmtVAT(_cashBill);
}
}
/// <summary>
/// 영수증 인쇄
/// </summary>
/// <param name="_bellNo">진동벨번호</param>
/// <param name="_isTalk">알림톡유무</param>
/// <param name="_isHappyPoint">HappyPoint 적립유무</param>
/// <param name="_isOkCashBag">Ok CashBag 적립유무</param>
/// <returns></returns>
public string PrintReceipt(string _bellNo, bool _isTalk, bool _isHappyPoint, bool _isOkCashBag)
{
if (NeedInitModule) return string.Empty;
string result = string.Empty; //대기번호
var saleMain = new SaleMainProcess();
var sRet = "";
try
{
//var m_cTrnStatus =
if (_isHappyPoint)
{
var m_cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT);
Column.TR_ETC.DATA cEtcItem = (Column.TR_ETC.DATA)m_cHappyPoint.GetPayment(new string[] { });
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
//cEtcItem.CANCEL_DIV = ItemConst.PAY_CANCEL_DIV.NORMAL;
//cEtcItem.AMT_ENTRY_09 = 4000d;
alEtcItem.Clear();
alEtcItem.Add(cEtcItem);
}
else if (_isOkCashBag)
{
//var m_cPntOcbSave = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.PNT_OCB_SAVE)
//Column.TR_ETC.DATA cEtcItem = (Column.TR_ETC.DATA)m_cPntOcbSave.GetPayment(new string[] { });
//ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
////cEtcItem.CANCEL_DIV = ItemConst.PAY_CANCEL_DIV.NORMAL;
////cEtcItem.AMT_ENTRY_09 = 4000d;
//alEtcItem.Clear();
//alEtcItem.Add(cEtcItem);
}
//영수증 인쇄
if (!string.IsNullOrEmpty(_bellNo))
{
m_cTrnStatus.Head.OrderNo = _bellNo;
m_cTrnStatus.Head.IsBellUse = "1";
}
sRet = saleMain.CheckSaleComplete(true);
//ISaleCompleteUs m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE);
//var sRet = m_cSaleComplete.PosSaleExecute(new string[] { });
string sFilePath = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM + "NHS_카드_결제_완료_여_.wav";
CmUtil.PlaySound(sFilePath);
result = m_cTrnStatus.Head.OrderNo; //대기번호
m_cTrnStatus.Head.OrderNo = "";
}
catch (Exception ex)
{
CommonLog.ErrorLogWrite(this, "PrintReceipt()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
result = string.Empty;
}
finally
{
if (sRet.Equals(UserCom.ERROR)) DisposePos(); //에러발생 시 거래정보 초기화 에러 없으면 SaleMainProcess에서 초기화 하고 있음..2019.04.17
}
return result;
}
/// <summary>
/// 장바구니 전체 변경
/// </summary>
/// <param name="_basketItems"></param>
/// <returns></returns>
public bool ResetItems(List<M_BasketItem> _basketItems)
{
if (NeedInitModule) return false;
bool result = true;
try
{
//TODO : Clear All Data
m_cDataService.DeleteTranItem();//주문화면에서 사용한 모든 거래 데이터 삭제
m_cDataService.InitTranHeader();//거래 정보 초기화
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.SALE;
if (_basketItems is List<M_BasketItem> && _basketItems.Count > 0)
{
foreach (var basketItem in _basketItems)
{
result = SetItem(basketItem);
if (!result) break;
}
}
}
catch (Exception ex)
{
CommonLog.ErrorLogWrite(this, "ResetItems()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
result = false;
}
return result;
}
public bool IsExistITEM_PLU_CD(string _pluCD)
{
bool result = false;
try
{
var saleItems = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
foreach (var aSaleItem in saleItems)
{
if (aSaleItem is Column.TR_PLU.DATA aItem)
{
if (aItem.ITEM_PLU_CD.Equals(_pluCD))
{
result = true;
break;
}
}
}
}
catch (Exception)
{
result = false;
}
return result;
}
/// <summary>
/// 2019-04-10 - 1997fx11 : 장바구니 아이템 추가또는 업데이트
/// (존재하는 아이템은 업데이트 그외는 추가처리)
/// </summary>
/// <param name="_basketItem"></param>
/// <returns></returns>
public bool SetItem(M_BasketItem _basketItem)
{
if (NeedInitModule) return false;
bool result = false;
try
{
//Set Item Process
string sRet = UserCom.RST_OK;
string sSubStoreNo = "", sItemCode = "", sScanCode = ""; // 점포코드, 상품코드, 스켄코드
string sInPutTypeCode = "", sSelRow = "", sInPutData = ""; // (0:수입력, 1:메뉴, 2:스켄, 3:플레이버) + (메뉴코드,스캔코드), 선택행, 입력데이터
ISalePluItemUs cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM);
sSubStoreNo = m_cPosStatus.Base.StoreNo; // 점포코드
sItemCode = _basketItem.ItemCode; // 상품코드
sInPutTypeCode = "1" + sSubStoreNo.PadLeft(7, '0') + sItemCode.PadLeft(9, ' ');
//sInPutTypeCode = sSubStoreNo.PadLeft(7, '0') + sItemCode.PadLeft(9, ' ');
if (_basketItem.Option == null)
{
//sRet = cPluService.SetItemCode(sSelRow, sInPutTypeCode, _basketItem.Count.ToString());
result = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM
, _basketItem.Count.ToString()
, sSelRow
, PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sInPutTypeCode.Substring(1));
}
else
{
string sTakeInOut = "1001"; // 기본값 : Take Out.
string sUpCharge = "1004"; // 기본값 : 샷추가안함.
//foreach (var option in _basketItem.Option)
//{
// foreach (var opt in option.Options)
// {
// if (opt.IsSelected)
// {
// if (opt.Kind == OptionKind.Button) { sTakeInOut = opt.Code; }
// else if (opt.Kind == OptionKind.UpCharge) { sUpCharge = opt.Code; }
// }
// }
//}
//sRet = cPluService.SetItemCode(sSelRow, sInPutTypeCode, _basketItem.Count.ToString());
result = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM
, _basketItem.Count.ToString()
, sSelRow
, PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sInPutTypeCode.Substring(1));
foreach (var option in _basketItem.Option)
{
foreach (var opt in option.Options)
{
if (opt.IsSelected)
{
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
Column.TR_PLU.DATA cPluItem = new Column.TR_PLU.DATA();
DataTable dtDataInfo = new DataTable();
DataRow drPlu;
sRet = UserCom.RST_OK;
var findIndex = aSaleItem.Count - 1;
for (var i = aSaleItem.Count - 1; i > -1; i--)
{
if (((Column.TR_PLU.DATA)aSaleItem[i]).ITEM_PLU_CD.Equals(_basketItem.ItemCode))
{
findIndex = i;
break;
}
}
switch (opt.Kind)
{
case OptionKind.Button:
dtDataInfo = m_cDataCommon.SearchNHSOption(sSubStoreNo, opt.Code);
drPlu = dtDataInfo.Rows[0];
cPluItem = new Column.TR_PLU.DATA();
cPluItem.SUB_SHOP_CD = sSubStoreNo;
cPluItem.ITEM_PLU_CD = opt.Code;
cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU;
cPluItem.SALE_QTY = _basketItem.Count;
cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.ITEM_OPTN_NM); ;
cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
cPluItem.NONSALES_RSN_CD = "0";
cPluItem.NONSALES_RSN_NM = "";
cPluItem.SUB_MENU_MAIN_CD = sItemCode;
aSaleItem.Add(cPluItem); // 등록 처리
break;
case OptionKind.Count:
dtDataInfo = m_cDataCommon.SearchNHSOption(sSubStoreNo, opt.Code);
drPlu = dtDataInfo.Rows[0];
cPluItem = new Column.TR_PLU.DATA();
cPluItem.SUB_SHOP_CD = sSubStoreNo;
cPluItem.ITEM_PLU_CD = opt.Code; // sItemCode;
cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU;
cPluItem.SALE_QTY = (long)opt.SelectValue;
cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.ITEM_OPTN_NM);
cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
cPluItem.NONSALES_RSN_CD = "0";
cPluItem.NONSALES_RSN_NM = "";
cPluItem.SUB_MENU_MAIN_CD = sItemCode;
aSaleItem.Add(cPluItem); // 등록 처리
break;
case OptionKind.Discount:
((Column.TR_PLU.DATA)aSaleItem[findIndex]).EXCEP_DC_AMT = ((opt.SelectValue < 0 ? (opt.SelectValue * (-1)) : opt.SelectValue) * _basketItem.Count);
((Column.TR_PLU.DATA)aSaleItem[findIndex]).EXCEP_DC_DIV = ((opt.SelectValue * (-1)) > 0 ? ItemConst.PLU_DC_DIV.ELOVE_DC : "0000");
break;
case OptionKind.UpCharge:
dtDataInfo = m_cDataCommon.SearchNHSOption(sSubStoreNo, opt.Code);
drPlu = dtDataInfo.Rows[0];
cPluItem = new Column.TR_PLU.DATA();
cPluItem.SUB_SHOP_CD = sSubStoreNo;
cPluItem.ITEM_PLU_CD = opt.KindCode;
cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU;
cPluItem.SALE_QTY = _basketItem.Count;
cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.ITEM_OPTN_NM);
cPluItem.SUBPRC_MENU_KEY_DIV = "2"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
cPluItem.NONSALES_RSN_CD = "0";
cPluItem.NONSALES_RSN_NM = "";
cPluItem.SUB_MENU_MAIN_CD = sItemCode;
cPluItem.SALE_PRC = CmUtil.DoubleParse(CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.AMT));
aSaleItem.Add(cPluItem); // 등록 처리
break;
}
//switch (opt.Kind)
//{
// case OptionKind.Button:
// if (opt.Code.Equals("1001") || opt.Code.Equals("1002"))
// {
// dtDataInfo = m_cDataCommon.SearchNHSOption(sSubStoreNo, opt.Code);
// drPlu = dtDataInfo.Rows[0];
// if (opt.Code.Equals("1001")) { ((Column.TR_PLU.DATA)aSaleItem[findIndex]).TAKE_IN_OUT_DIV = PosConst.TAKE_IN_OUT_DIV.TAKE_OUT; }
// else if (opt.Code.Equals("1002")) { ((Column.TR_PLU.DATA)aSaleItem[findIndex]).TAKE_IN_OUT_DIV = PosConst.TAKE_IN_OUT_DIV.TAKE_IN; }
// cPluItem = new Column.TR_PLU.DATA();
// cPluItem.SUB_SHOP_CD = sSubStoreNo;
// cPluItem.ITEM_PLU_CD = opt.Code;
// cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU;
// cPluItem.SALE_QTY = _basketItem.Count;
// cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.ITEM_OPTN_NM); ;
// cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
// cPluItem.NONSALES_RSN_CD = "0";
// cPluItem.NONSALES_RSN_NM = "";
// cPluItem.SUB_MENU_MAIN_CD = sItemCode;
// //cPluItem.PROD_TAKEINOUT_DIV = dgvPluItem.Rows[iRow].Cells[6].Value.ToString();
// aSaleItem.Add(cPluItem); // 등록 처리
// }
// break;
// case OptionKind.Discount:
// ((Column.TR_PLU.DATA)aSaleItem[findIndex]).EXCEP_DC_AMT = ((opt.SelectValue < 0 ? (opt.SelectValue * (-1)) : opt.SelectValue) * _basketItem.Count);
// ((Column.TR_PLU.DATA)aSaleItem[findIndex]).EXCEP_DC_DIV = ((opt.SelectValue * (-1)) > 0 ? ItemConst.PLU_DC_DIV.ELOVE_DC : "0000");
// break;
// case OptionKind.UpCharge:
// dtDataInfo = m_cDataCommon.SearchItemCode(sSubStoreNo, opt.KindCode, sScanCode);
// drPlu = dtDataInfo.Rows[0];
// cPluItem = new Column.TR_PLU.DATA();
// cPluItem.SUB_SHOP_CD = sSubStoreNo;
// cPluItem.ITEM_PLU_CD = opt.KindCode;
// cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU;
// if (sTakeInOut.Equals("1001"))
// {
// cPluItem.SALE_PRC = CmUtil.DoubleParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT));
// }
// else
// {
// cPluItem.SALE_PRC = CmUtil.DoubleParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT));
// }
// cPluItem.SALE_QTY = _basketItem.Count;
// cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_NM);
// cPluItem.SUBPRC_MENU_KEY_DIV = "2"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
// cPluItem.NONSALES_RSN_CD = "0";
// cPluItem.NONSALES_RSN_NM = "";
// cPluItem.SUB_MENU_MAIN_CD = sItemCode;
// //cPluItem.PROD_TAKEINOUT_DIV = dgvPluItem.Rows[iRow].Cells[6].Value.ToString();
// aSaleItem.Add(cPluItem); // 등록 처리
// break;
// case OptionKind.Count:
// if (opt.Code.Equals("1006") || opt.Code.Equals("1007"))
// {
// dtDataInfo = m_cDataCommon.SearchNHSOption(sSubStoreNo, opt.Code);
// drPlu = dtDataInfo.Rows[0];
// cPluItem = new Column.TR_PLU.DATA();
// cPluItem.SUB_SHOP_CD = sSubStoreNo;
// cPluItem.ITEM_PLU_CD = opt.Code; // sItemCode;
// cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU;
// cPluItem.SALE_QTY = (long)opt.SelectValue;
// cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.ITEM_OPTN_NM);
// cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
// cPluItem.NONSALES_RSN_CD = "0";
// cPluItem.NONSALES_RSN_NM = "";
// cPluItem.SUB_MENU_MAIN_CD = sItemCode;
// //cPluItem.PROD_TAKEINOUT_DIV = dgvPluItem.Rows[iRow].Cells[6].Value.ToString();
// aSaleItem.Add(cPluItem); // 등록 처리
// }
// break;
// default:
// break;
//}
if (sRet != UserCom.RST_OK) { break; }
}
if (sRet != UserCom.RST_OK) { break; }
}
}
}
//if (sRet == UserCom.RST_OK) { result = true; }
//else { result = false; }
}
catch (Exception ex)
{
CommonLog.ErrorLogWrite(this, "SetItem()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
result = false;
}
return result;
}
/// <summary>
/// 장바구니 아이템 삭제 또는 업데이트
/// (수량이 동일 하면 삭제 다르면 업데이트 필요)
/// </summary>
/// <param name="_basketItem"></param>
/// <returns></returns>
public bool DelItem(M_BasketItem _basketItem)
{
bool result = false;
try
{
//TODO : Delete Item Process
//result = m_cSaleMainProc.CancelPluItem(_basketItem.p_Index.ToString());
m_cSaleMainProc.CancelPluItem("0");
result = true;
}
catch (Exception ex)
{
CommonLog.ErrorLogWrite(this, "DelItem()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
result = false;
}
return result;
}
/// <summary>
/// 장바구니옵션 변경
/// (수량이 동일 하면 삭제 다르면 업데이트 필요)
/// </summary>
/// <param name="_basketItem"></param>
/// <returns></returns>
public bool UpdatedItem(M_BasketItem _basketItem)
{
bool result = false;
try
{
//TODO : Delete Item Process
result = true;
}
catch (Exception ex)
{
CommonLog.ErrorLogWrite(this, "DelItem()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
result = false;
}
return result;
}
#endregion Methods
public ObservableCollection<M_BasketItem> AddItemToBasket(ObservableCollection<M_BasketItem> _targetBasket
, int _itemCount
, double _unitPrice
, string _designImagesPath
, M_ItemData _itemData
, List<M_ItemOptionGroup> _option
, BasketItemType _basketItemType = BasketItemType.Order)
{
ObservableCollection<M_BasketItem> result = null;
try
{
var optionLabel = CommonFunction.GetOptionLabel(_option);
var findSameData = _targetBasket is ObservableCollection<M_BasketItem>
? _targetBasket.Where(r => r.ItemCode.Equals(_itemData.ItemCode)
&& r.AllOptionLabel.GetLanguageData(SupportLanguageType.ko).Replace("[행사]", "").Equals(optionLabel.GetLanguageData(SupportLanguageType.ko))).FirstOrDefault()
: null;
var itemIndex = 0;
if (findSameData is M_BasketItem findedItem)
{
itemIndex = findSameData.p_Index;
findedItem.Count += _itemCount;
//SetItem(findedItem);
//수량 증가
//m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.QTY_PLUS, "", itemIndex.ToString(), "");
}
else
{
var newBasketData = _targetBasket is ObservableCollection<M_BasketItem>
? _targetBasket.ToList()
: new List<M_BasketItem>();
//foreach (var aitem in newBasketData)
//{
// aitem.Index += 1;
//}
//var pIdx = 0;
//if (newBasketData.Count != 0) pIdx++;
itemIndex = newBasketData.Count.Equals(0)
? 0
: newBasketData.Max(r => r.p_Index) + 1;
var newBasketItem = new M_BasketItem
{
Index = 0,
p_Index = itemIndex,
ItemType = _basketItemType,
ItemCode = _itemData.ItemCode,
ItemImage = _itemData.DataParameter.NormalBrush,
ItemName = _itemData.BaseTextBlock.LanguageData,
AllOptionLabel = optionLabel,
Option = _option,
Count = _itemCount,
BasePrice = _itemData.Price,
Price = _unitPrice,
ItemCountLabel = new List<M_Language>
{
new M_Language {Type=SupportLanguageType.ko,LanguageData=@"개"},
new M_Language {Type=SupportLanguageType.en,LanguageData=@"EA"}
},
ItemPriceLabel = new List<M_Language>
{
new M_Language {Type=SupportLanguageType.ko,LanguageData=@"\"}
},
MinusNormalBrush = ResourceManager.GetNximagePathAdd("btn_count_minus_n.png", _designImagesPath),
MinusDownBrush = ResourceManager.GetNximagePathAdd("btn_count_minus_p.png", _designImagesPath),
PlusNormalBrush = ResourceManager.GetNximagePathAdd("btn_count_plus_n.png", _designImagesPath),
PlusDownBrush = ResourceManager.GetNximagePathAdd("btn_count_plus_p.png", _designImagesPath)
};
//SetItem(newBasketItem);
//var saleItems = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
//foreach(var aItems in saleItems)
//{
// if(((Column.TR_PLU.DATA)aItems).CPI_DC_AMT > 0)
// {
// newBasketItem.Price = newBasketItem.Price - ((Column.TR_PLU.DATA)aItems).CPI_DC_AMT;
// }
//}
//상품등록 처리(POS)
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT; //판매대기
ISalePluItemUs cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM);
var sSubStoreNo = m_cPosStatus.Base.StoreNo; // 점포코드
var sItemCode = newBasketItem.ItemCode; // 상품코드
var sMenuCode = "1" + sSubStoreNo.PadLeft(7, '0') + sItemCode.PadLeft(9, ' ');
//bool bRet = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, sInPutValue, "", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sMenuCode.Substring(1));
bool bRet = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, "", itemIndex.ToString(), PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sMenuCode.Substring(1));
//var nStat = cPluService.SetItemCode(itemIndex.ToString(), PosConst.SALE_PLU_INPUT_TYPE.MENUKEY, m_cPosStatus.Base.StoreNo, newBasketItem.ItemCode, "", newBasketItem.Count.ToString());
if (bRet)
{
itemIndex = 0;
var saleItems = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (((Column.TR_PLU.DATA)saleItems[itemIndex]).CPI_DC_AMT > 0)
{
newBasketItem.CampaignPrice = ((Column.TR_PLU.DATA)saleItems[itemIndex]).CPI_DC_AMT;
newBasketItem.Price = _itemData.Price - newBasketItem.CampaignPrice;
var addOptionLabel = new List<M_Language>
{
new M_Language {Type=SupportLanguageType.ko,LanguageData=@"[행사]"},
new M_Language {Type=SupportLanguageType.en,LanguageData=@"[EVENT]"}
};
newBasketItem.AllOptionLabel = optionLabel is List<M_Language>
? Languages.CombineLanguageData(addOptionLabel, optionLabel)
: addOptionLabel;
}
newBasketData.Insert(0, newBasketItem);
DelItem(newBasketItem);
}
else
{
CommonLog.ErrorLogWrite(this, "AddItemToBasket()", "Fail !!", string.Format("\nItemCode={0}", newBasketItem.ItemCode));
}
//if (bRet == true)
// newBasketData.Insert(0, newBasketItem);
result = new ObservableCollection<M_BasketItem>(newBasketData);
}
}
catch (Exception ex)
{
CommonLog.ErrorLogWrite(this, "AddItemToBasket()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
result = null;
}
return result;
}
/// <summary>
/// 바코드 데이터 초기화
/// </summary>
public void LastBarcodeDelete()
{
m_cPosStatus.Base.LastRcptBarcodeData = string.Empty;
}
}
}