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

1414 lines
66 KiB
C#

using System;
using System.Text;
using System.Collections;
using System.Data;
using System.IO;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 상품등록
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
/// <summary>
/// 상품등록 클래스
/// </summary>
class SalePluItem : SalePluItemBase, ISalePluItemUs
{
/// <summary>
/// 생성자
/// </summary>
public SalePluItem()
{
}
/// <summary>
/// 세트 메뉴 할인 마스터 로딩 처리
/// </summary>
public void LoadSetMenuDisMaster()
{
SalePluSetMenu m_cPluSetDis = (SalePluSetMenu)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_SET_MENU);
m_cPluSetDis.LoadSetMenuDisMaster(); // 세트할인 마스터 로딩
}
/*
/// <summary>
///
/// </summary>
/// <returns></returns>
/// <remarks>2019-04-11 - 1997fx11 : Kiosk용 SetItemCode</remarks>
public string SetItemCode(object oParam)
{
SPC.Kiosk.Common.M_BasketItem _basketItem = (SPC.Kiosk.Common.M_BasketItem)oParam;
string sSubStoreNo = "", sItemCode = "", sScanCode = ""; //점포코드, 상품코드, 스켄코드
string sRet = UserCom.RST_ERR;
sSubStoreNo = m_cPosStatus.Base.StoreNo; // 점포코드
sItemCode = _basketItem.ItemCode; // 상품코드
return "";
}
*/
/// <summary>
/// 상품 등록 처리
/// </summary>
/// <param name="sSelRow">선택행</param>
/// <param name="sInPutTypeCode">(0:수입력, 1:메뉴, 2:스켄, 3:플레이버) + (메뉴코드,스캔코드)</param>
/// <param name="sInPutData">입력데이터</param>
/// <returns></returns>
/// 2019-04-05 - 1997fx11 : SetItemCode 관련 참조
public string SetItemCode(string sSelRow, string sInPutTypeCode, string sInPutData)
{
string sSubStoreNo = "", sItemCode = "", sScanCode = ""; //점포코드, 상품코드, 스켄코드
string sRet = UserCom.RST_ERR;
try
{
string sInPutType = PosConst.SALE_PLU_INPUT_TYPE.MENUKEY;
if (sInPutTypeCode.Length > 0) sInPutType = sInPutTypeCode.Substring(0, 1);
if (sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.MENUKEY)
|| sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.FLAVOUR) || sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.SUBMENU)) // 메뉴코드
{
// 메뉴코드 = (점포코드(10)+상품코드)
sSubStoreNo = sInPutTypeCode.Substring(1, 10).Trim(); // 점포코드
sItemCode = sInPutTypeCode.Substring(11); // 상품코드
}
else if (sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.KEY_IN) || sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.SCANNER)) // 스캔입력
{
sSubStoreNo = m_cPosStatus.Base.StoreNo; // 점포코드
sScanCode = sInPutTypeCode.Substring(1); // 스캔코드
}
else
{
sSubStoreNo = m_cPosStatus.Base.StoreNo; // 점포코드
sItemCode = sInPutTypeCode.Substring(1); // 상품코드
}
// 상품 등록 처리
sRet = SetItemCode(sSelRow, sInPutType, sSubStoreNo, sItemCode, sScanCode, sInPutData);
if (sRet != UserCom.RST_OK) return sRet;
if (sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.FLAVOUR) == true)
{
// 플레이버 수량 체크 => 플레이버 수량이 1 이면 플레이버 등록 수량으로 상품 수량 변경
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[int.Parse(sSelRow)];
if (cPluItem.FLAVOUR_QTY == 1)
{
long nPlvQty = 0;
for (int i = int.Parse(sSelRow) + 1; i < m_alTrPluItem.Count; i++)
{
Column.TR_PLU.DATA cPlavourItem = (Column.TR_PLU.DATA)m_alTrPluItem[i];
if (cPlavourItem.FLAVOUR_DIV != ItemConst.PLU_FLAVOUR_DIV.FLAVOUR) break;
if (cPlavourItem.CANCEL_DIV == "1" || cPlavourItem.CANCEL_DIV_MAIN == "1") continue;
nPlvQty += cPlavourItem.SALE_QTY;
}
if (nPlvQty > cPluItem.SALE_QTY)
{
cPluItem.SALE_QTY = nPlvQty;
m_cDataService.UpdatePluItemAmount(cPluItem);
}
}
}
// 세트할인 처리
//SalePluSetMenu m_cPluSetDis = (SalePluSetMenu)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_SET_MENU);
//m_cPluSetDis.ExecuteSetMenuDiscount();
// 상품 판매가 계산
ItemAmountExeccute(true, true);
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;
}
/// <summary>
/// 상품 지정 취소 처리
/// </summary>
/// <param name="sSelRow"></param>
/// <returns></returns>
public string SetCancelItem(string sSelRow)
{
string sRet = UserCom.RST_ERR;
try
{
int nSelRow = int.Parse(sSelRow);
// 상품 정보
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[nSelRow];
//// 세트 자식은 지정취소 불가
//if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_DETL)
//{
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0013); // 지정 취소 할 수 없는 상품 입니다
// return sRet;
//}
// 부가메뉴 등록중
//if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT)
//{
// if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.OPT_MENU)
// {
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0024); // 부가메뉴만 취소 할 수 있습니다
// return sRet;
// }
//}
//if (cPluItem.CANCEL_DIV == "0")
//{
// // ----------------------------------------------------------------------------------------------
// // 지정취소시 묶음할인 적용 그룹도 같이 취소
// // ----------------------------------------------------------------------------------------------
// sRet = PluiTem_DC_Cancel(cPluItem);
// if (sRet != UserCom.RST_OK) return sRet;
// // ----------------------------------------------------------------------------------------------
//}
//if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK)
//{
// // 주문 완료된 상품은 지정취소만 가능
// if (cPluItem.CANCEL_DIV == "1") // 지정취소
// {
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0012); // 주문완료후 지정취소 해지 불가
// return sRet;
// }
// cPluItem.CANCEL_DIV = "1";
// cPluItem.CANCEL_DATE = DateTime.Now.ToString("yyyyMMddHHmmss");
// cPluItem.ORDER_OK_FLAG = PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD;
//}
//else if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD)
//{
// if (cPluItem.CANCEL_DIV == "1")
// {
// cPluItem.CANCEL_DIV = "0";
// cPluItem.CANCEL_DATE = "";
// }
// else
// {
// cPluItem.CANCEL_DIV = "1";
// cPluItem.CANCEL_DATE = DateTime.Now.ToString("yyyyMMddHHmmss");
// }
// //cPluItem.ORDER_OK_FLAG = PosConst.PLU_ORDER_OK_FLAG.ORDER_OK;
//}
//// 선불카드 판매 - 중국인 경우
//else if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.PREPAID && PosMstManager.GetPosOption(POS_OPTION.OPT046) == "1")
//{
// // 취소요청
// IPaymentUs m_cSalePreCard = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALEPRECARD);
// if (cPluItem.CANCEL_DIV == "1")
// {
// // 정상 요청
// sRet = m_cSalePreCard.SetPayment(new string[] { "0", cPluItem.SALE_GIFT_NO, "0" });
// }
// else
// {
// // 취소 요청
// sRet = m_cSalePreCard.CancelPayment(new string[] { "1", cPluItem.SALE_GIFT_NO, "0" });
// }
// if (sRet == UserCom.RST_OK)
// {
// if (cPluItem.CANCEL_DIV == "1")
// {
// cPluItem.CANCEL_DIV = "0";
// cPluItem.CANCEL_DATE = "";
// }
// else
// {
// cPluItem.CANCEL_DIV = "1";
// cPluItem.CANCEL_DATE = DateTime.Now.ToString("yyyyMMddHHmmss");
// }
// }
//}
//else
//{
// if (cPluItem.CANCEL_DIV == "1")
// {
// cPluItem.CANCEL_DIV = "0";
// cPluItem.CANCEL_DATE = "";
// }
// else
// {
// cPluItem.CANCEL_DIV = "1";
// cPluItem.CANCEL_DATE = DateTime.Now.ToString("yyyyMMddHHmmss");
// }
//}
//m_cDataService.UpdatePluItemAmount(cPluItem);
//if (nSelRow + 1 < m_alTrPluItem.Count)
//{
// // 상위메뉴 지정취소 => 하위 메뉴 반영
// for (int i = nSelRow + 1; i < m_alTrPluItem.Count; i++)
// {
// Column.TR_PLU.DATA cItem = (Column.TR_PLU.DATA)m_alTrPluItem[i];
// if (cPluItem.FLAVOUR_DIV == ItemConst.PLU_FLAVOUR_DIV.FLAVOUR)
// {
// break;
// }
// else if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN)
// {
// if ((cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN)
// && cItem.FLAVOUR_DIV != ItemConst.PLU_FLAVOUR_DIV.FLAVOUR) break;
// }
// else
// {
// break;
// }
// cItem.CANCEL_DIV_MAIN = cPluItem.CANCEL_DIV;
// cItem.ORDER_OK_FLAG = cPluItem.ORDER_OK_FLAG;
// if (cPluItem.CANCEL_DIV == "1" && cItem.CANCEL_DIV == "0") cItem.CANCEL_DATE = DateTime.Now.ToString("yyyyMMddHHmmss");
// m_cDataService.UpdatePluItemAmount(cItem);
// }
//}
// 지정취소 항목 삭제
//if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_ING && PosMstManager.GetPosOption(POS_OPTION.OPT025) == "1")
//{
// 지정취소 항목삭제 일때 기타에 지정취소 데이터 저장 필요.
ISaleCompleteUs m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE);
m_cSaleComplete.ItemCancelExecute(new string[] { });
string sFLAVOUR_DIV = cPluItem.FLAVOUR_DIV;
string sITEM_DIV = cPluItem.ITEM_DIV;
m_alTrPluItem.RemoveAt(nSelRow);
while (nSelRow < m_alTrPluItem.Count)
{
Column.TR_PLU.DATA cItem = (Column.TR_PLU.DATA)m_alTrPluItem[nSelRow];
if (sFLAVOUR_DIV == ItemConst.PLU_FLAVOUR_DIV.FLAVOUR)
{
break;
}
else if (sITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || sITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN)
{
if ((cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN)
&& cItem.FLAVOUR_DIV != ItemConst.PLU_FLAVOUR_DIV.FLAVOUR) break;
}
else
{
break;
}
m_alTrPluItem.RemoveAt(nSelRow);
}
//}
// 상품 판매가 계산
ItemAmountExeccute(true, true);
//if (m_cPosStatus.Base.DmbIf == "1")
//{
// // 디지털메뉴보드 I/F
// IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF);
// // 지정취소
// //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start
// //기존
// //cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.PRODUCT_REG, cPluItem.ITEM_PLU_CD, cPluItem.ITEM_NAME, "3" });
// //변경
// if (PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1")
// {
// cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.PRODUCT_REG, cPluItem.ITEM_PLU_CD, cPluItem.ITEM_NAME, "3" });
// }
// //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end
//}
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;
}
/// <summary>
/// 지정취소시 상품할인 취소처리
/// </summary>
/// <param name="cPluItem"></param>
/// <returns></returns>
private string PluiTem_DC_Cancel(Column.TR_PLU.DATA cPluItem)
{
string sRet = UserCom.RST_ERR;
try
{
// ----------------------------------------------------------------------------------------------
// 현재 소계 할인 이면....
// ----------------------------------------------------------------------------------------------
if (cPluItem.ITEM_DC_AMT > 0)
{
if (cPluItem.DC_TYPE == ItemConst.PLU_DC_TYPE.DC_SUM)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0684) == true)
{
SubTotalDcClear();
}
else
{
return sRet;
}
}
}
// ----------------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------------
// 지정취소시 묶음할인 적용 그룹도 같이 취소
// ----------------------------------------------------------------------------------------------
if (cPluItem.SET_DC_AMT > 0)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0685) == false)
{
return sRet;
}
int nSetDcGroupCD = cPluItem.SET_DC_GROUP_CD;
ArrayList alSaleItemSetDc = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int i = 0; i < alSaleItemSetDc.Count; i++)
{
Column.TR_PLU.DATA cPluItemSetDc = (Column.TR_PLU.DATA)alSaleItemSetDc[i];
if (cPluItemSetDc.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItemSetDc.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue; // 지정취소
if ((cPluItemSetDc.SET_DC_GROUP_CD == 0 && cPluItemSetDc.SET_DC_AMT > 0) || (cPluItemSetDc.SET_DC_GROUP_CD == nSetDcGroupCD))
{
cPluItemSetDc.SET_DC_AMT = 0;
cPluItemSetDc.SET_DC_GROUP_CD = 0;
m_cDataService.UpdatePluItemAmount(cPluItemSetDc);
if (cPluItemSetDc.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK) cPluItemSetDc.ORDER_OK_FLAG = PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD;
}
}
}
// ----------------------------------------------------------------------------------------------
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;
}
/// <summary>
/// 판매등록중 소계할인 클리어
/// </summary>
private void SubTotalDcClear()
{
try
{
foreach (Column.TR_PLU.DATA cPluItem in m_alTrPluItem)
{
if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL && cPluItem.DC_TYPE == ItemConst.PLU_DC_TYPE.DC_SUM && cPluItem.ITEM_DC_AMT > 0)
{
cPluItem.DC_TYPE = ItemConst.PLU_DC_TYPE.NORMAL;
cPluItem.DC_DIV = ItemConst.PLU_DC_DIV.NORMAL;
cPluItem.ITEM_DC_AMT = 0;
m_cDataService.UpdatePluItemAmount(cPluItem);
if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK) cPluItem.ORDER_OK_FLAG = PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD;
}
}
}
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="sSelRow"></param>
/// <param name="sNewQty"></param>
/// <returns></returns>
public string SetQtyChangeItem(string sSelRow, string sNewQty)
{
string sRet = UserCom.RST_ERR;
try
{
int nSelRow = CmUtil.IntParse(sSelRow);
long nNewQty = CmUtil.LongParse(sNewQty);
// 상품 정보
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[nSelRow];
// 취소 상품은 수량변경 불가
if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1")
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); // 취소한 상품 입니다
return sRet;
}
// 세트 자식은 수량변경 불가
if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_DETL || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.GIFT || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.PREPAID)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0014); // 수량변경 할 수 없는 상품 입니다
return sRet;
}
// 부가메뉴 등록중
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT)
{
if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.OPT_MENU)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0025); // 부가메뉴만 변경 할 수 있습니다
return sRet;
}
}
if ( cPluItem.ITEM_DC_AMT > 0 || cPluItem.SET_DC_AMT > 0 || cPluItem.EXCEP_DC_AMT > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0548);
return sRet;
}
if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK)
{
// Del, 2017.04.19, 후불 주문완료상품 수량 변경
//ITableUs cTableSvr = (ITableUs)sManager.InitServiceInstance(ServiceLists.BSV_TABLE.DLL, ServiceLists.BSV_TABLE.TABLE_SERVICE);
//var cnt = cTableSvr.GetKtchDiveceCount(cPluItem.ORDER_OK_FLAG, m_cPosStatus.Sale.SelectFloorCd, m_cPosStatus.Sale.SelectTableNo, cPluItem.SUB_SHOP_CD + cPluItem.ITEM_PLU_CD);
//if (cnt > 0)
//{
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0015); // 주문완료 후 수량변경 할 수 없습니다
// return sRet;
//}
}
if (nNewQty <= 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0567); // 수량을 입력 후 사용하세요.
return sRet;
}
else if (nNewQty > 99999)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0568); // 입력된 수량이 너무 큽니다.
return sRet;
}
cPluItem.SALE_QTY = nNewQty;
// 판매 loss일 경우 0원 처리
//if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS) cPluItem.ITEM_DC_AMT = cPluItem.SALE_PRC * cPluItem.SALE_QTY;
m_cDataService.UpdatePluItemAmount(cPluItem);
if (nSelRow + 1 < m_alTrPluItem.Count)
{
// 상위메뉴 수량 => 하위 메뉴 반영
if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN)
{
for (int i = nSelRow + 1; i < m_alTrPluItem.Count; i++)
{
Column.TR_PLU.DATA cItem = (Column.TR_PLU.DATA)m_alTrPluItem[i];
if (cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN) break;
if (cItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_DETL)
{
cItem.SALE_QTY = nNewQty;
// 판매 loss일 경우 0원 처리
//if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS) cPluItem.ITEM_DC_AMT = cPluItem.SALE_PRC * cPluItem.SALE_QTY;
}
m_cDataService.UpdatePluItemAmount(cItem);
}
}
}
// 상품 판매가 계산
ItemAmountExeccute(true, true);
//if (m_cPosStatus.Base.DmbIf == "1")
//{
// // 디지털메뉴보드 I/F
// IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF);
// // 수량변경
// //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start
// //기존
// //cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.PRODUCT_REG, cPluItem.ITEM_PLU_CD, cPluItem.ITEM_NAME, "2" });
// //변경
// if (PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1")
// {
// cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.PRODUCT_REG, cPluItem.ITEM_PLU_CD, cPluItem.ITEM_NAME, "2" });
// }
// //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end
//}
if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK) cPluItem.ORDER_OK_FLAG = PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD;
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;
}
/// <summary>
/// 단품 할인 적용
/// </summary>
/// <param name="sSelRow"></param>
/// <param name="sDcType">ITEM_DC_DIV_POS_DC</param>
/// <param name="sVaule"></param>
/// <returns></returns>
public string SetDcItem(string sSelRow, string sDcType, string sDcCode, string sVaule)
{
string sRet = UserCom.RST_ERR;
try
{
int nSelRow = CmUtil.IntParse(sSelRow);
double dDcValue = CmUtil.DoubleParse(sVaule);
// 상품 정보
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[nSelRow];
// 취소 상품은 할인 불가
if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); // 취소한 상품 입니다
return sRet;
}
//// 세트 자식은 할인 불가
//if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL && cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_MAIN)
//{
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0050); // 할인 적용 불가능한 상품 입니다.
// return sRet;
//}
// 할인 허용 여부
if (cPluItem.DC_PRMT_YN == "1" || cPluItem.FREE_GIFT_YN == "1" || cPluItem.SALE_PRC == 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0050); // 할인 적용 불가능한 상품 입니다.
return sRet;
}
// 할인 등록 여부 체크
if (m_cDataService.GetPluDiscountAmount(false, false, true, true, true, true, true, true, false, nSelRow) > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0063); // 기존 할인 취소 후 등록 하세요.
return sRet;
}
double nBasicAmt = cPluItem.SALE_AMT; // 기준금액
if (sDcType == PosConst.ITEM_DC_DIV_POS_DC.FREE) // 서비스
{
// 2016-12-10 문대리 요청으로 무조건 적용!
//if ( cPluItem.DC_DIV != ItemConst.PLU_DC_DIV.NORMAL && cPluItem.DC_DIV != ItemConst.PLU_DC_DIV.FREE)
//{
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0063); // 기존 할인 취소 후 등록 하세요.
// return sRet;
//}
if (sDcCode == ItemConst.PLU_DC_DIV.FREE) //서비스
{
if (cPluItem.DC_DIV == ItemConst.PLU_DC_DIV.FREE)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0064) == false) // 등록된 서비스을 취소 하시겠습니까?
return sRet;
// 서비스 취소
cPluItem.ITEM_DC_AMT = 0;
}
else
{
// 서비스 등록
cPluItem.ITEM_DC_AMT = nBasicAmt;
cPluItem.EXCEP_DC_AMT = 0;
cPluItem.EXCEP_DC_DIV = ItemConst.PLU_DC_DIV.NORMAL;
}
cPluItem.DC_DIV = (cPluItem.ITEM_DC_AMT == 0) ? ItemConst.PLU_DC_DIV.NORMAL : ItemConst.PLU_DC_DIV.FREE;
}
else if (sDcCode == ItemConst.PLU_DC_DIV.ITEM_CHAGE_CPN_DC)
{
if (cPluItem.DC_DIV == ItemConst.PLU_DC_DIV.ITEM_CHAGE_CPN_DC)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0662) == false) // 등록된 제품교환권을 취소 하시겠습니까?
return sRet;
// 제품교환권 취소
cPluItem.ITEM_DC_AMT = 0;
}
else
{
// 제품교환권 등록
cPluItem.ITEM_DC_AMT = nBasicAmt;
cPluItem.EXCEP_DC_AMT = 0;
cPluItem.EXCEP_DC_DIV = ItemConst.PLU_DC_DIV.NORMAL;
}
cPluItem.DC_DIV = (cPluItem.ITEM_DC_AMT == 0) ? ItemConst.PLU_DC_DIV.NORMAL : ItemConst.PLU_DC_DIV.ITEM_CHAGE_CPN_DC;
}
}
else // 상품 할인
{
//if (cPluItem.DC_DIV != ItemConst.PLU_DC_DIV.NORMAL && cPluItem.DC_DIV != ItemConst.PLU_DC_DIV.POS_DC)
//{
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0063); // 기존 할인 취소 후 등록 하세요.
// return sRet;
//}
if (dDcValue == 0)
{
if (cPluItem.DC_DIV == sDcCode)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0053) == false) // 등록된 할인을 취소 하시겠습니까?
return sRet;
}
else
{
if (sDcType == PosConst.ITEM_DC_DIV_POS_DC.RATE)
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0051); // 할인 율을 입력하지 않았거나 너무 큽니다
else
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0049); // 할인 금액을 입력하지 않았거나 너무 큽니다
return sRet;
}
}
else
{
if (cPluItem.BILL_AMT == 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0601); // 할인 적용 대상 금액이 없습니다.
return sRet;
}
}
nBasicAmt = CmUtil.DoubleSubtraction(nBasicAmt, cPluItem.EXCEP_DC_AMT);
if (sDcType == PosConst.ITEM_DC_DIV_POS_DC.RATE)
{
// 율 할인
if (dDcValue > 100)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0051); // 할인 율을 입력하지 않았거나 너무 큽니다
return sRet;
}
cPluItem.DC_RATE = dDcValue;
double nDcAmt = CmUtil.MathRounds(CmUtil.MathAmtPercent(nBasicAmt, dDcValue), m_cPosStatus.Mst.DcRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.DcRudDwLoc));
//girak.kim, #2017/08/29 중국 상품 할인율 소숫점 둘째자리 올림 처리(그러므로 결재금액은 내림처리됨) Start
if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCCN))
{
nDcAmt = Convert.ToDouble(Decimal.Round(Convert.ToDecimal(nDcAmt) + Convert.ToDecimal(0.05), 1));
}
//girak.kim, #2017/08/29 중국 상품 할인율 소숫점 둘째자리 올림 처리(그러므로 결재금액은 내림처리됨) End
if (CmUtil.DoubleAdd(cPluItem.BILL_AMT, cPluItem.ITEM_DC_AMT) < nDcAmt)
{
WinManager.ErrorMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0602), cPluItem.BILL_AMT, nDcAmt)); // 할인 대상 금액 보다 적용하려는 금액이 더 큽니다.
return sRet;
}
cPluItem.ITEM_DC_AMT = nDcAmt;
}
else
{
// 금액 할인
if (dDcValue > nBasicAmt)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0049); // 할인 금액을 입력하지 않았거나 너무 큽니다
return sRet;
}
cPluItem.DC_RATE = 0;
double nDcAmt = CmUtil.MathRounds(dDcValue, m_cPosStatus.Mst.DcRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.DcRudDwLoc));
if (CmUtil.DoubleAdd(cPluItem.BILL_AMT, cPluItem.ITEM_DC_AMT) < nDcAmt)
{
WinManager.ErrorMessage(string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0602), cPluItem.BILL_AMT, nDcAmt)); // 할인 대상 금액 보다 적용하려는 금액이 더 큽니다.
return sRet;
}
cPluItem.ITEM_DC_AMT = nDcAmt;
}
cPluItem.DC_DIV = (cPluItem.ITEM_DC_AMT == 0) ? ItemConst.PLU_DC_DIV.NORMAL : sDcCode;
}
cPluItem.DC_TYPE = (cPluItem.ITEM_DC_AMT == 0) ? ItemConst.PLU_DC_TYPE.NORMAL : ItemConst.PLU_DC_TYPE.DC_ITEM;
m_cDataService.UpdatePluItemAmount(cPluItem);
// 상품 판매가 계산
ItemAmountExeccute(true, true);
if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK) cPluItem.ORDER_OK_FLAG = PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD;
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;
}
/// <summary>
/// 단품 No Tax
/// </summary>
/// <param name="sSelRow"></param>
/// <returns></returns>
public string SetNoTaxItem(string sSelRow)
{
string sRet = UserCom.RST_ERR;
try
{
int nSelRow = CmUtil.IntParse(sSelRow);
// 상품 정보
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[nSelRow];
// 취소 상품은 할인 불가
if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); // 취소한 상품 입니다
return sRet;
}
// 세트 자식은 적용 불가
if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL && cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_MAIN)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0159); //NO TAX 적용 불가 상품 입니다.
return sRet;
}
if (cPluItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.FREE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0159); //NO TAX 적용 불가 상품 입니다.
return sRet;
}
// 사은품 및 금액이 없을 경우 체크
if (cPluItem.FREE_GIFT_YN == "1" || cPluItem.SALE_PRC == 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0159);
return sRet;
}
if (cPluItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES)
{
cPluItem.NOTAX_DIV = PosConst.ITEM_NOTAX_DIV.NO;
}
else
{
cPluItem.APPLY_TAX_AMT = 0;
cPluItem.NOTAX_DIV = PosConst.ITEM_NOTAX_DIV.YES;
}
m_cDataService.UpdatePluItemAmount(cPluItem);
// 상품 판매가 계산
ItemAmountExeccute(true, true);
if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK) cPluItem.ORDER_OK_FLAG = PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD;
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;
}
//#Rhee, 20180212 전체상품 No Tax 추가 Start
/// <summary>
/// 전체상품 No Tax
/// </summary>
/// <returns></returns>
public string SetAllNoTaxItem()
{
string sRet = UserCom.RST_ERR;
try
{
// 상품 정보
foreach (Column.TR_PLU.DATA cPluItem in m_alTrPluItem)
{
// NO TAX 적용 불가 상품 입니다.
if (! ((cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL)
|| (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL && cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_MAIN)
|| (cPluItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.FREE)
|| (cPluItem.FREE_GIFT_YN == "1" || cPluItem.SALE_PRC == 0))
)
{
if (cPluItem.NOTAX_DIV == PosConst.ITEM_NOTAX_DIV.YES)
{
cPluItem.NOTAX_DIV = PosConst.ITEM_NOTAX_DIV.NO;
}
else
{
cPluItem.APPLY_TAX_AMT = 0;
cPluItem.NOTAX_DIV = PosConst.ITEM_NOTAX_DIV.YES;
}
m_cDataService.UpdatePluItemAmount(cPluItem);
// 상품 판매가 계산
ItemAmountExeccute(true, true);
if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK) cPluItem.ORDER_OK_FLAG = PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD;
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;
}
//#Rhee, 20180212 전체상품 No Tax 추가 End
/// <summary>
/// 세트메뉴 구성 상품 변경
/// </summary>
/// <param name="sSelRow"></param>
/// <param name="sMenuCode"></param>
/// <param name="sMenuName"></param>
/// <param name="sMenuPrc"></param>
/// <returns></returns>
public string SetSetMenuItemChange(string sSelRow, string sMenuCode, string sMenuName, string sMenuPrc)
{
string sRet = UserCom.RST_ERR;
try
{
int nSelRow = CmUtil.IntParse(sSelRow);
// 상품 정보
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[CmUtil.IntParse(sSelRow)];
// 취소 상품은 변경 불가
if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1")
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); // 취소한 상품 입니다
return sRet;
}
if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0015); // 주문완료 후 수량변경 할 수 없습니다
return sRet;
}
if (cPluItem.ITEM_DC_AMT > 0 || cPluItem.SET_DC_AMT > 0 || cPluItem.EXCEP_DC_AMT > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0548);
return sRet;
}
if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_DETL)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0307);
return sRet;
}
// 변경될 상품 조회 후 설정
if (SetTrPluItemToMst(cPluItem, cPluItem.SUB_SHOP_CD, sMenuCode) == false) return sRet;
cPluItem.ITEM_PLU_CD = sMenuCode;
if (sMenuName != "")
cPluItem.ITEM_NAME = ">" + sMenuName;
else
cPluItem.ITEM_NAME = ">" + cPluItem.ITEM_NAME;
cPluItem.SALE_PRC = CmUtil.DoubleParse(sMenuPrc);
// 판매 loss일 경우 0원 처리
//if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS) cPluItem.ITEM_DC_AMT = cPluItem.SALE_PRC * cPluItem.SALE_QTY;
m_cDataService.UpdatePluItemAmount(cPluItem);
// 상품 판매가 계산
ItemAmountExeccute(true, true);
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;
}
/// <summary>
/// 상품 부가메뉴 => 부가메뉴 변경
/// </summary>
/// <param name="sSelRow"></param>
/// <param name="sMenuCode"></param>
/// <param name="sMenuKeyDiv"></param>
/// <returns></returns>
public string SetSubMenuItemChange(string sSelRow, string sMenuCode, string sMenuKeyDiv)
{
string sRet = UserCom.RST_ERR;
try
{
// 상품 정보
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[CmUtil.IntParse(sSelRow)];
// 취소 상품은 변경 불가
if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1")
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); // 취소한 상품 입니다
return sRet;
}
if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0015); // 주문완료 후 수량변경 할 수 없습니다
return sRet;
}
if (cPluItem.ITEM_DC_AMT > 0 || cPluItem.SET_DC_AMT > 0 || cPluItem.EXCEP_DC_AMT > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0548);
return sRet;
}
if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.OPT_MENU)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0026);
return sRet;
}
// 변경될 상품 조회 후 설정
if (SetTrPluItemToMst(cPluItem, cPluItem.SUB_SHOP_CD, sMenuCode.Substring(10)) == false) return sRet;
cPluItem.ITEM_NAME = ">>" + cPluItem.ITEM_NAME;
cPluItem.SUBPRC_MENU_KEY_DIV = sMenuKeyDiv; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
if (sMenuKeyDiv != "2")
cPluItem.SALE_PRC = 0;
else
cPluItem.SALE_PRC = m_cTrnStatus.Sale.SubMenuUpSalePrc;
// 상품 판매가 계산
ItemAmountExeccute(true, true);
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;
}
/// <summary>
/// 상품 부가메뉴 => 부가메뉴구분(속성) 등록
/// </summary>
/// <param name="sMemoCode"></param>
/// <param name="sMemoName"></param>
/// <returns></returns>
public string SetSubMenuMemoItem(string sMemoCode, string sMemoName, string sInPutData)
{
int nSelRow = 0;
bool bSumMenuAdd = false;
string sRet = UserCom.RST_ERR;
try
{
// 메뉴코드 = (점포코드(10)+상품코드)
string sSubStoreNo = sMemoCode.Substring(0, 10).Trim(); // 점포코드
string sItemCode = sMemoCode.Substring(10); // 상품코드
nSelRow = m_alTrPluItem.Count - 1;
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
{
nSelRow = (int)m_cTrnStatus.Sale.SubMenuSelectPos + 1;
if (nSelRow >= m_alTrPluItem.Count)
{
nSelRow = m_alTrPluItem.Count - 1;
bSumMenuAdd = true;
}
}
// 같은 상품 등록 여부 체크(수량증가)
bool bQtyAdd = false;
if (nSelRow >= 0 && sInPutData == ""
&& (PosMstManager.GetPosOption(POS_OPTION.OPT031) == "1" || PosMstManager.GetPosOption(POS_OPTION.OPT031) == "2")) // 수량 합산 처리(0:미합산, 1:최종상품합산, 2:전체상품합산))
{
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[nSelRow];
if (cPluItem.SUB_SHOP_CD == sSubStoreNo
&& cPluItem.ITEM_PLU_CD == sItemCode
&& cPluItem.SUBPRC_MENU_KEY_DIV == "1"
&& cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_ING
&& cPluItem.CANCEL_DIV == "0" && cPluItem.DC_DIV == ItemConst.PLU_DC_DIV.NORMAL && cPluItem.SALE_QTY < 99999)
{
// 수량 증가
cPluItem.SALE_QTY += 1;
bQtyAdd = true;
}
}
if (bQtyAdd == false)
{
// 상품 정보 생성
Column.TR_PLU.DATA cPluItem = new Column.TR_PLU.DATA();
cPluItem.SUB_SHOP_CD = sSubStoreNo;
cPluItem.ITEM_PLU_CD = sItemCode;
cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU;
cPluItem.SALE_QTY = 1;
if (sInPutData.Length > 0 && sInPutData.Length <= 5) cPluItem.SALE_QTY = CmUtil.LongParse(sInPutData);
cPluItem.ITEM_NAME = ">>>" + sMemoName;
cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
cPluItem.NONSALES_RSN_CD = m_cTrnStatus.Head.NonSaleRsnCd;
cPluItem.NONSALES_RSN_NM = m_cTrnStatus.Head.LossTitle;
cPluItem.SUB_MENU_MAIN_CD = m_cTrnStatus.Sale.SubMenuMainCode;
if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_DOING || bSumMenuAdd == true)
m_alTrPluItem.Add(cPluItem); // 등록 처리
else
m_alTrPluItem.Insert(nSelRow, cPluItem); // 등록 처리
}
// 상품 판매가 계산
ItemAmountExeccute(true, true);
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;
}
/// <summary>
/// 상품 부가메뉴 => 부가메뉴구분(속성) 변경
/// </summary>
/// <param name="sMemoCode"></param>
/// <param name="sMemoName"></param>
/// <returns></returns>
public string SetSubMenuMemoItemChange(string sSelRow, string sMemoCode, string sMemoName)
{
string sRet = UserCom.RST_ERR;
try
{
// 상품 정보
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[CmUtil.IntParse(sSelRow)];
// 취소 상품은 변경 불가
if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1")
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); // 취소한 상품 입니다
return sRet;
}
if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0015); // 주문완료 후 수량변경 할 수 없습니다
return sRet;
}
if (cPluItem.ITEM_DC_AMT > 0 || cPluItem.SET_DC_AMT > 0 || cPluItem.EXCEP_DC_AMT > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0548);
return sRet;
}
if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.OPT_MENU)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0026);
return sRet;
}
cPluItem.ITEM_PLU_CD = sMemoCode.Substring(11); // 상품코드
cPluItem.ITEM_NAME = ">>>" + sMemoName;
cPluItem.SALE_PRC = 0;
cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴)
// 상품 판매가 계산
ItemAmountExeccute(true, true);
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;
}
/// <summary>
/// 상품마스터 이미지명 업데이터
/// </summary>
/// <returns></returns>
public void UpdateMstItemImageName()
{
string sQuery = "", sUpdQuery = "";
ArrayList alUpdQuery = new ArrayList();
try
{
sUpdQuery = " UPDATE POSMST..MST_ITEM SET ";
sUpdQuery += " SALE_IMG_FILE_NM = '{0}' ";
sUpdQuery += " , BTN_ITEM_IMG = '{1}' ";
sUpdQuery += " WHERE CMP_CD = '{2}' ";
sUpdQuery += " AND STOR_CD = '{3}' ";
sUpdQuery += " AND SUB_STOR_CD = '{4}' ";
sUpdQuery += " AND ITEM_CD = '{5}' ";
// 대상 상품 조회
sQuery = " SELECT A.* ";
sQuery += " FROM POSMST..MST_ITEM A ";
sQuery += " JOIN POSMST..MST_ITEM_KEY B ON A.CMP_CD=B.CMP_CD AND A.STOR_CD=B.STOR_CD AND A.SUB_STOR_CD = B.SUB_STOR_CD AND A.ITEM_CD = B.ITEM_CD ";
sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' ";
sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "' ";
sQuery += " AND A.USE_YN = '" + PosConst.MST_USE_YN.YES + "' ";
DataTable dtMstItem = m_cMstService.Select(new string[] { sQuery });
if (dtMstItem == null || dtMstItem.Rows.Count == 0) return;
foreach (DataRow dr in dtMstItem.Rows)
{
string sSubStorCd = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SUB_STOR_CD).Trim();
string sItemCode = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.ITEM_CD).Trim();
string sFileNameFull = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.SALE_IMG_FILE_NM).Trim();
string sFileNameBtn = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM.DATA.BTN_ITEM_IMG).Trim();
string sNewFileNameFull = "";
if (File.Exists(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + sItemCode + "_FULL.PNG") == true)
sNewFileNameFull = sItemCode + "_FULL.PNG";
else if (File.Exists(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + sFileNameFull) == true)
sNewFileNameFull = sFileNameFull;
string sNewFileNameBtn = "";
if (File.Exists(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + sItemCode + ".PNG") == true)
sNewFileNameBtn = sItemCode + ".PNG";
else if (File.Exists(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.ITEM + sFileNameBtn) == true)
sNewFileNameBtn = sFileNameBtn;
if (sFileNameFull != sNewFileNameFull || sFileNameBtn != sNewFileNameBtn)
{
sQuery = string.Format(sUpdQuery, sNewFileNameFull, sNewFileNameBtn, m_cPosStatus.Base.CmpCd, m_cPosStatus.Base.StoreNo, sSubStorCd, sItemCode);
alUpdQuery.Add(sQuery);
}
}
if (alUpdQuery.Count > 0)
{
string[] saQuery = new string[alUpdQuery.Count];
for (int i = 0; i < alUpdQuery.Count; i++)
{
saQuery[i] = (string)alUpdQuery[i];
}
m_cMstService.Update(saQuery);
}
}
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>
/// <returns></returns>
//#20170920 보류 처리시 임의할인 내역 유지 되도록 수정 start
//기존
//public bool ItemDcAllClear(bool bCampaignClear, bool bEtcCodeClear = false)
//변경
public bool ItemDcAllClear(bool bCampaignClear, bool bEtcCodeClear = false, bool bNorDcClear = true)
//#20170920 보류 처리시 임의할인 내역 유지 되도록 수정 end
{
bool bRet = false;
try
{
if (bCampaignClear == true)
m_cCampaingMain.ClearCampaignAmt(); // 캠페인 취소 처리
//상품 할인정보 초기화
foreach (Column.TR_PLU.DATA cPluItem in m_alTrPluItem)
{
//#20170920 보류 처리시 임의할인 내역 유지 되도록 수정 start
//기존
/*
cPluItem.DC_DIV = ItemConst.PLU_DC_DIV.NORMAL; // POS 할인 구분
cPluItem.DC_TYPE = ItemConst.PLU_DC_TYPE.NORMAL; // 할인 유형
cPluItem.DC_RATE = 0; // POS 할인 율
cPluItem.ITEM_DC_AMT = 0; // POS 단품 할인 금액
*/
//변경
if (bNorDcClear == true)
{
cPluItem.DC_DIV = ItemConst.PLU_DC_DIV.NORMAL; // POS 할인 구분
cPluItem.DC_TYPE = ItemConst.PLU_DC_TYPE.NORMAL; // 할인 유형
cPluItem.DC_RATE = 0; // POS 할인 율
cPluItem.ITEM_DC_AMT = 0; // POS 단품 할인 금액
}
//#20170920 보류 처리시 임의할인 내역 유지 되도록 수정 end
cPluItem.SUM_DC_AMT = 0; // POS 소계 할인 금액
cPluItem.CPI_DC_QTY = 0; // 캠페인 성립 수량
cPluItem.CPI_DC_AMT = 0; // 캠페인 할인 금액
cPluItem.COOP_CARD_DC_DIV = ItemConst.PLU_DC_DIV.NORMAL; // 제휴카드 할인 구분
cPluItem.COOP_CARD_DC_AMT = 0; // 제휴카드 할인 금액
cPluItem.POINT_DC_DIV = ItemConst.PLU_DC_DIV.NORMAL; // 포인트 할인 구분
cPluItem.POINT_DC_AMT = 0; // 포인트 할인 금액
cPluItem.CPN_DC_DIV = ItemConst.PLU_DC_DIV.NORMAL; // 쿠폰 할인 구분
cPluItem.CPN_DC_AMT = 0; // 쿠폰 할인 금액
cPluItem.EMP_DC_DIV = ItemConst.PLU_DC_DIV.NORMAL; // 직원 할인 구분
cPluItem.EMP_DC_AMT = 0; // 직원 할인 금액
cPluItem.SET_DC_AMT = 0; // 세트 할인 금액
cPluItem.SET_DC_GROUP_CD = 0; // 세트 세트그룹코드
cPluItem.ETC_DC_DIV = ItemConst.PLU_DC_DIV.NORMAL; // 기타 할인 구분
cPluItem.ETC_DC_AMT = 0; // 기타 할인 금액
cPluItem.EXCEP_DC_DIV = ItemConst.PLU_DC_DIV.NORMAL; // 예외 할인 구분
cPluItem.EXCEP_DC_AMT = 0; // 예외 할인 금액
cPluItem.CPI_PRESENT_DIV = "0"; // 캠페인 증정 구분
if (bEtcCodeClear == true)
{
// 기타부가정보 초기화
//#15149 PB 오목교 - 기부내역 불러온뒤 제품추가 후 결제하면 추가한수량 합계되지않는 증상 start
//기존
cPluItem.NONSALES_RSN_CD = "0";
//변경
//if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
//{
// if (cPluItem.NONSALES_RSN_CD != "")
// {
// DataTable dt = m_cDataCommon.SeletCommonCode(PosConst.COMMON_CODE_GROUP.S0001, cPluItem.NONSALES_RSN_CD);
// if (dt != null && dt.Rows.Count > 0)
// {
// DataRow dr = dt.Rows[0];
// cPluItem.NONSALES_RSN_NM = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CD_NM);
// }
// }
//
// m_cTrnStatus.Head.NonSaleRsnCd = cPluItem.NONSALES_RSN_CD;
// m_cTrnStatus.Head.LossTitle = cPluItem.NONSALES_RSN_NM;
//}
//else
//{
// cPluItem.NONSALES_RSN_CD = "0";
//}
//#15149 PB 오목교 - 기부내역 불러온뒤 제품추가 후 결제하면 추가한수량 합계되지않는 증상 end
cPluItem.PACK_DIV = "0";
cPluItem.CPI_PRESENT_DIV = "0";
cPluItem.BILLSPR_NO = 0;
cPluItem.SALE_GIFT_NO = "";
cPluItem.CPN_NO = "";
}
}
// 상품 판매가 계산
ItemAmountExeccute(false, true);
bRet = 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;
}
//#Rhee, 20180130 단품 할인 전체 취소 추가 Start
/// <summary>
/// 단품 할인 적용 전체 취소
/// </summary>
/// <param name="sDcDiv"></param>
/// <param name="sDcType"></param>
/// <returns></returns>
public string SetDcCancelItem(string sDcDiv, string sDcType)
{
string sRet = UserCom.RST_ERR;
try
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0053) != false) // 등록된 할인을 취소 하시겠습니까?
{
// 상품 정보
foreach (Column.TR_PLU.DATA cPluItem in m_alTrPluItem)
{
if (cPluItem.DC_DIV == sDcDiv && (cPluItem.DC_TYPE == sDcType || cPluItem.DC_TYPE == "1"))
{
cPluItem.ITEM_DC_AMT = 0;
cPluItem.DC_RATE = 0;
cPluItem.DC_DIV = ItemConst.PLU_DC_DIV.NORMAL;
cPluItem.DC_TYPE = ItemConst.PLU_DC_TYPE.NORMAL;
m_cDataService.UpdatePluItemAmount(cPluItem);
if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK) cPluItem.ORDER_OK_FLAG = PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD;
}
}
// 상품 판매가 계산
ItemAmountExeccute(true, true);
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;
}
//#Rhee, 20180130 단품 할인 전체 취소 추가 End
}
}