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 { /// /// 상품등록 클래스 /// class SalePluItem : SalePluItemBase, ISalePluItemUs { /// /// 생성자 /// public SalePluItem() { } /// /// 세트 메뉴 할인 마스터 로딩 처리 /// public void LoadSetMenuDisMaster() { SalePluSetMenu m_cPluSetDis = (SalePluSetMenu)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_SET_MENU); m_cPluSetDis.LoadSetMenuDisMaster(); // 세트할인 마스터 로딩 } /* /// /// /// /// /// 2019-04-11 - 1997fx11 : Kiosk용 SetItemCode 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 ""; } */ /// /// 상품 등록 처리 /// /// 선택행 /// (0:수입력, 1:메뉴, 2:스켄, 3:플레이버) + (메뉴코드,스캔코드) /// 입력데이터 /// /// 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; } /// /// 상품 지정 취소 처리 /// /// /// 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; } /// /// 지정취소시 상품할인 취소처리 /// /// /// 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; } /// /// 판매등록중 소계할인 클리어 /// 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); } } /// /// 상품 수량 변경 처리 /// /// /// /// 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; } /// /// 단품 할인 적용 /// /// /// ITEM_DC_DIV_POS_DC /// /// 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; } /// /// 단품 No Tax /// /// /// 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 /// /// 전체상품 No Tax /// /// 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 /// /// 세트메뉴 구성 상품 변경 /// /// /// /// /// /// 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; } /// /// 상품 부가메뉴 => 부가메뉴 변경 /// /// /// /// /// 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; } /// /// 상품 부가메뉴 => 부가메뉴구분(속성) 등록 /// /// /// /// 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; } /// /// 상품 부가메뉴 => 부가메뉴구분(속성) 변경 /// /// /// /// 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; } /// /// 상품마스터 이미지명 업데이터 /// /// 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); } } /// /// 상품아이템 할인 전체 취소 /// /// //#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 /// /// 단품 할인 적용 전체 취소 /// /// /// /// 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 } }