/// <summary> /// 현금결제처리 /// </summary> /// <param name="amt">금액</param> /// <param name="IsCheckBill">현금영수증<c>true</c> [is check bill].</param> /// <param name="paycodeInput">입금코드</param> /// <param name="agreeno">현금영수증승인번호</param> /// <param name="empNo">The emp no.</param> /// <returns></returns> /// <remarks> /// 현금결제인데도 불구하고 현금영수증 여부나 입금코드를 받는 이유는 /// 객실 선수금일때 카드결제시에도 현금 로직을 태워야되기때문이다. /// </remarks> private string fn_110(string amt, bool IsCheckBill, string paycodeInput, string agreeno, string empNo, string references) { string strReturn = ""; /*-------------------------------------------------------------------------------------------------------*/ // 현금영수증 /*-------------------------------------------------------------------------------------------------------*/ string bill_saledate = ""; //영업일자 string bill_bizcode = ""; //사업장코드 string bill_facilitycode = ""; //영업장코드 string bill_posno = ""; //포스번호 string bill_biilno = ""; //전표번호 string bill_saleyn = ""; //판매여부 string bill_payseq = "0"; //순번 // 현금영수증이 있으면 체번한 값을 없으면 Default 0 값이 들어간다. string bill_agreeyn = ""; //승인번호 string bill_saleamt = ""; //판매금액 string bill_pe_co_code = ""; //법인개인구분 string bill_id_no_code = ""; //식별코드 string bill_id_no = ""; //식별번호 string bill_agreeno = ""; //승인번호 string bill_keyinyn = ""; //이지체여부 string bill_date = ""; //정의없음 try { //현금영수증 체크 if (IsCheckBill) { if (Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_Facipart)) + Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_RoomNo)).Trim() == "") { return("Bill 번호를 생성 할 수 없습니다.\n\r\n\r동코드:" + PayInfomation.RoomInfo.C_Facipart + "\r\n객실번호:" + PayInfomation.RoomInfo.C_RoomNo); } bill_saledate = PayInfomation.RoomInfo.C_Taskdate; //영업일자 bill_bizcode = PayInfomation.RoomInfo.C_Bizcode; //사업장코드 bill_facilitycode = PayInfomation.RoomInfo.C_Facilitycode; //영업장코드 bill_posno = "01"; //포스번호 bill_biilno = Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_Facipart)) + Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_RoomNo)); //전표번호 bill_saleyn = "Y"; //판매여부 bill_payseq = "일련번호-체번한다."; //순번 bill_agreeyn = "Y"; //승인여부 switch (TabControl.SelectedTabPage.Name) { case "tp_1": //현금 bill_saleamt = Basic.MaskReplace(txtCashAmt.Text.Trim()); //판매금액 bill_pe_co_code = optCashBillKind.SelectedIndex < 1 ? "P" : "C"; //법인C 개인구분 P bill_id_no_code = lupCashBill_IdCode.EditValue.ToString().Trim(); //식별코드 bill_id_no = txtCashBillRegNo.Text.Trim(); //식별번호 break; case "tp_10": // 예금 bill_saleamt = Basic.MaskReplace(txtBankAmt.Text.Trim()); //판매금액 bill_pe_co_code = optBankCashBillKind.SelectedIndex < 1 ? "P" : "C"; //법인C 개인구분 P bill_id_no_code = lupBankCashBill_IdCode.EditValue.ToString().Trim(); //식별코드 bill_id_no = txtBankCashBillRegNo.Text.Trim(); //식별번호 break; } if (bill_id_no.Length <= 0) { DataRow[] dr = Parm.mDataTable.dtZx010ms.Select("HEAD = 'Z0028' AND DETAIL = '0' AND USE_YN = 'Y' "); if (dr.Length > 0 && int.Parse(dr[0]["ITEM2"].ToString()) < int.Parse(bill_saleamt)) { bill_id_no_code = "0"; bill_id_no = dr[0]["ITEM1"].ToString(); } } bill_agreeno = agreeno; //승인번호 bill_keyinyn = "N"; //이지체크를 통해 들어왔는지 bill_date = ""; //정의없음 DataTable dtParmBill = DataLayer.GetDataTableParameter(DataLayer.DatatableStyle.Parameter); dtParmBill.Rows.Add(new object[] { "V_BIZ_CODE", bill_bizcode }); dtParmBill.Rows.Add(new object[] { "V_FACILITY_CODE", bill_facilitycode }); dtParmBill.Rows.Add(new object[] { "V_POS_NO", bill_posno }); dtParmBill.Rows.Add(new object[] { "V_SALE_DATE", bill_saledate }); dtParmBill.Rows.Add(new object[] { "V_BILL_NO", bill_biilno }); dtParmBill.Rows.Add(new object[] { "V_SALE_YN", "Y" }); string billSeq = DataLayer.ExecuteSpScala("PKG_DAZAZ02.PR_IAA031MS_PAYSEQ", dtParmBill, DataLayer.MessageEncoding.Default); bill_payseq = billSeq; } if (PayInfomation.useKind == UseKind.Room) { /*-------------------------------------------------------------------------------------------------------*/ // Room 일때 /*-------------------------------------------------------------------------------------------------------*/ string bizcode = ""; //사업장코드 string facilitycode = ""; //영업장코드 string mngno = ""; //관리번호 string mngseq = ""; //관리순번 string taskdate = ""; //작업일자 string keyseq = ""; //일련번호 string rasiecode = ""; //발생코드 string paycode = ""; //결제코드 string payamt = ""; //결제금액 string itemstat = ""; //상태 string facipart = ""; //동코드 string reference = ""; //참고(카드번호,승인번호/락카번호/연회번호/상품권번호/회원번호) string seqno = ""; //순번 string rmrk = ""; //비고 string co_facilitycode = ""; //이체영업장코드 string co_mngcode = ""; //이체관리번호 string co_mngseq = ""; //이체관리순번 string co_taskdate = ""; //이체영업일자 string co_keyseq = ""; //이체일련번호 string st_facilitycode = ""; //최초영업장코드 string st_mngno = ""; //최초관리번호 string st_mngseq = ""; //최초관리순번 string st_taskdate = ""; //최초영업일자 string st_keyseq = ""; //최초일련번호 //string empno = ""; //사원번호 string ip = ""; //아이피 string editstatus = ""; //작업구분 bizcode = PayInfomation.RoomInfo.C_Bizcode; facilitycode = PayInfomation.RoomInfo.C_Facilitycode; mngno = PayInfomation.RoomInfo.C_Mngno; mngseq = PayInfomation.RoomInfo.C_Mngseq; taskdate = PayInfomation.RoomInfo.C_Taskdate; keyseq = "일련번호"; rasiecode = ((int)PayInfomation.RaseCode).ToString(); paycode = paycodeInput; payamt = amt; itemstat = "N"; facipart = PayInfomation.RoomInfo.C_Facipart; reference = references; seqno = bill_payseq; rmrk = agreeno; co_facilitycode = PayInfomation.RoomInfo.CO_Facilitycode; co_mngcode = PayInfomation.RoomInfo.CO_Mngcode; co_mngseq = PayInfomation.RoomInfo.CO_Mngseq; co_taskdate = PayInfomation.RoomInfo.CO_Taskdate; co_keyseq = PayInfomation.RoomInfo.CO_Keyseq; st_facilitycode = PayInfomation.RoomInfo.ST_Facilitycode; st_mngno = PayInfomation.RoomInfo.ST_Mngno; st_mngseq = PayInfomation.RoomInfo.ST_Mngseq; st_taskdate = PayInfomation.RoomInfo.ST_Taskdate; st_keyseq = PayInfomation.RoomInfo.ST_Keyseq; //empno = Parm.CurrentUserInformation.id; ip = Parm.CurrentUserInformation.ip; editstatus = "2"; //seqno 순번을 가져와서 할당한다. //입금테이블 [DCA030MS] // 사업장코드 // 영업장코드 //관리번호 //관리순번// 영업일자 // == 일련번호// // 순번을 가져온다 //PR_KEY_SEQ DataTable dtParm = DataLayer.GetDataTableParameter(DataLayer.DatatableStyle.Parameter); dtParm.Rows.Add(new object[] { "V_BIZ_CODE", bizcode }); dtParm.Rows.Add(new object[] { "V_FACILITY_CODE", facilitycode }); dtParm.Rows.Add(new object[] { "V_MNG_NO", mngno }); dtParm.Rows.Add(new object[] { "V_MNG_SEQ", mngseq }); dtParm.Rows.Add(new object[] { "V_TASK_DATE", taskdate }); keyseq = DataLayer.ExecuteSpScala("PKG_DAZAZ02.PR_DCA030MS_KEY_SEQ", dtParm, DataLayer.MessageEncoding.Default); // 선수금일때 최초영업장과 //이체영업장을 설정한다. if (PayInfomation.RaseCode == RaseCodeInfo.Deposit) { co_keyseq = co_keyseq == "" ? keyseq : co_keyseq; st_keyseq = st_keyseq == "" ? keyseq : st_keyseq; } else { co_keyseq = keyseq; st_keyseq = keyseq; } DataTable dtcash = Pay.Room_110(bizcode, facilitycode, mngno, mngseq, taskdate, keyseq, rasiecode, paycode, payamt, itemstat, facipart, reference, seqno, rmrk, co_facilitycode, co_mngcode, co_mngseq, co_taskdate, co_keyseq, st_facilitycode, st_mngno, st_mngseq, st_taskdate, st_keyseq, empNo, ip, editstatus); DataTable[] dtArry = null; //현금영수증이 없다면 // 현금내역만 담고 //그렇지 않으면 현금영수증 내역까지 담아서 트랜잭션처리한다. if (!IsCheckBill) { dtArry = new DataTable[] { dtcash }; } else { DataTable dtcashBill = Pay.PayAddBill(bill_saledate, bill_bizcode, bill_facilitycode, bill_posno, bill_biilno, bill_saleyn, bill_payseq, bill_agreeyn, bill_saleamt, bill_pe_co_code, bill_id_no_code, bill_id_no, bill_agreeno, bill_saledate, bill_keyinyn, // 이지체크여부에 N을 넘긴다. empNo, bill_date, ip); dtArry = new DataTable[] { dtcash, dtcashBill }; } //Application.DoEvents(); DataSet dsTmp = DataLayer.AddProdedcure(dtArry); string v_ret = DataLayer.ExecuteSpScalaTransaction(dsTmp, "OK", DataLayer.MessageEncoding.Default); strReturn = v_ret; } } catch (Exception ex) { strReturn = ex.Message; } return(strReturn); }
/// <summary> /// [현금] 항목 삭제 /// </summary> /// <param name="r">입금정보</param> /// <param name="emp">사번.</param> /// <param name="memo">사유.</param> private void fn_110(DataRow r, string emp, string memo, string seqnos) { string _BenRegNo = ""; try { //객실일때 마감여부 확인 bool IsClose = BizCommon.Gneral_D.IsRoomClose(); if (info.useKind == DAZAZ02.UseKind.Room && IsClose) { Basic.ShowMessage(1, "현재 마감작업중입니다. \n\r마감이 끝난후 작업을 계속하십시요"); return; } if (Faci == "" || RoomNo == "") { Basic.ShowMessage(1, "동코드와 객실번호는 전표번호를 생성하는 기초데이터 입니다."); return; } #region DataRow 정보 /* * dt.Columns.Add("FACILITY_CODE" ); * dt.Columns.Add("MNG_NO" ); * dt.Columns.Add("MNG_SEQ" ,typeof(decimal)); * dt.Columns.Add("TASK_DATE" ); * dt.Columns.Add("KEY_SEQ" ,typeof(decimal)); * dt.Columns.Add("RAISE_CODE" ); * dt.Columns.Add("RAISE_CODE_NAME"); * dt.Columns.Add("PAY_CODE" ); * dt.Columns.Add("PAY_CODE_NAME"); * dt.Columns.Add("PAY_AMT" ,typeof(decimal)); * dt.Columns.Add("RMRK" ); * dt.Columns.Add("REFERENCE" ); * dt.Columns.Add("SEQ_NO" ,typeof(decimal)); * dt.Columns.Add("TRACK_TWO" ); * dt.Columns.Add("CARD_NO" ); * dt.Columns.Add("VALID_THRU" ); * dt.Columns.Add("AGREE_NO" ); * dt.Columns.Add("AGREE_DATE" ); * dt.Columns.Add("INSTALLMENT_CNT" ,typeof(decimal)); * dt.Columns.Add("EASY_YN" ); * * dt.Columns.Add("CO_FACILITY_CODE" ); * dt.Columns.Add("CO_MNG_NO" ); * dt.Columns.Add("CO_MNG_SEQ" ,typeof(decimal)); * dt.Columns.Add("CO_TASK_DATE" ); * dt.Columns.Add("CO_KEY_SEQ" ,typeof(decimal)); */ #endregion string bizcode = Parm.CurrentUserInformation.BizInfo.BizCode; //사업장코드 string facilitycode = r["FACILITY_CODE"].ToString().Trim(); //영업장코드 string mngno = r["MNG_NO"].ToString().Trim(); //관리번호 string mngseq = r["MNG_SEQ"].ToString().Trim(); //관리순번 string taskdate = Appdate; //작업일자 string keyseq = "일련번호"; //일련번호 string rasiecode = r["RAISE_CODE"].ToString().Trim(); //발생코드 string paycode = r["PAY_CODE"].ToString().Trim(); //결제코드 string payamt = r["PAY_AMT"].ToString().Trim(); //결제금액 string itemstat = ""; //상태 string facipart = Faci; //동코드 string reference = r["REFERENCE"].ToString().Trim(); //참고(카드번호,승인번호/락카번호/연회번호/상품권번호/회원번호) string seqno = seqnos; //순번 string rmrk = memo; //비고 string co_facilitycode = ""; //이체영업장코드 string co_mngcode = ""; //이체관리번호 string co_mngseq = ""; //이체관리순번 string co_taskdate = ""; //이체영업일자 string co_keyseq = ""; //이체일련번호 string st_facilitycode = facilitycode; //최초영업장코드 string st_mngno = mngno; //최초관리번호 string st_mngseq = mngseq; //최초관리순번 string st_taskdate = Basic.MaskReplace(r["TASK_DATE"].ToString().Trim()); //최초영업일자 string st_keyseq = r["KEY_SEQ"].ToString().Trim(); //최초일련번호 string empno = emp; //사원번호 string ip = Parm.CurrentUserInformation.ip; //아이피 string editstatus = "3"; //작업구분 /********************************************** * 현금영수증 처리 ********************************************** * 1. 현금 연수증을 사용하지 않은처리 * 3. 현금영수증을 밴승인을 통한 처리 *********************************************/ string bill_saledate = ""; //영업일자 string bill_bizcode = ""; //사업장코드 string bill_facilitycode = ""; //영업장코드 string bill_posno = ""; //포스번호 string bill_biilno = ""; //전표번호 string bill_saleyn = ""; //판매여부 string bill_payseq = "순번"; //순번 string bill_agreeyn = ""; //승인번호 string bill_saleamt = ""; //판매금액 string bill_pe_co_code = ""; //법인개인구분 string bill_id_no_code = ""; //식별코드 string bill_id_no = ""; //식별번호 string bill_agreeno = ""; //승인번호 string bill_easyyn = ""; //이지체크여부 string bill_date = ""; //정의없음 string bill_agreedate = ""; //원승인일자 bool IsBillYn = false; DataTable dtBill = null; //승인번호가 있다면 // 현금영수증이 승인된 데이터 이다. if (r["AGREE_NO"].ToString().Trim() != "") { //현금영수증이 있다고 마킹한다. IsBillYn = true; //아무튼. 현금영수증인 승인된건이기때문에 //현금영수증 테이블에 담는다. /* * 채번한다. */ bill_saledate = Appdate; //영업일자 bill_bizcode = Parm.CurrentUserInformation.BizInfo.BizCode; //사업장코드 bill_facilitycode = r["FACILITY_CODE"].ToString().Trim(); //영업장코드 bill_posno = "01"; //포스번호 bill_biilno = Basic.MaskReplace(Num.GetNumberOnly(Faci)) + Basic.MaskReplace(Num.GetNumberOnly(RoomNo)); //전표번호 bill_saleyn = "Y"; //판매여부 bill_payseq = "순번"; //순번 bill_agreeyn = "N"; //승인번호 bill_saleamt = (int.Parse(r["PAY_AMT"].ToString().Trim()) * -1).ToString(); //판매금액 bill_pe_co_code = r["INSTALLMENT_CNT"].ToString().Trim(); //법인개인구분 bill_id_no_code = r["VALID_THRU"].ToString().Trim(); //식별코드 bill_id_no = r["REFERENCE"].ToString().Trim(); //식별번호 bill_agreeno = ""; // _BenRegNo; //승인번호 bill_easyyn = r["EASY_YN"].ToString().Trim(); //키인여부 bill_date = ""; //정의없음 bill_agreeno = r["AGREE_NO"].ToString().Trim(); bill_agreedate = r["AGREE_DATE"].ToString().Trim(); //밴을 이용한 승인취소건이다. //승인을 취소한다. //Ben통신을 한다. /*☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★*/ _BenRegNo = "밴승인번호"; _BenRegNo = ""; //if(BizCommon.CheckVan.CheckMode() == DialogResult.No) return; /***********************************************************************************************************************************************/ string str = ""; Van.RecivedData RegCashreq = new Van.RecivedData(); using (BizVanComunication bizVans = new BizVanComunication()) { RegCashreq = bizVans.SendData("PROJECT_D", JobKind.CancelCash, bill_pe_co_code == "0" ? Van.CashKind.Persnal : Van.CashKind.Company, bill_id_no, "", "", payamt, "", "", bill_agreeno, //bill_agreedate.Substring(2, 6), bill_agreedate, bill_id_no_code == "1" ? CashGbn.Card : CashGbn.None); bizVans.Dispose(); } /***********************************************************************************************************************************************/ if (RegCashreq.IsAgreeError) { //if( Basic.ShowMessage(1, "승인을 취소하지 못했습니다. \n\r\n\r" + "오류내용 : \n\r" + RegCashreq.Message); return; } _BenRegNo = RegCashreq.AgreeNo; bill_agreeno = _BenRegNo; this.Cursor = Cursors.WaitCursor; DataTable dtParmBill = DataLayer.GetDataTableParameter(DataLayer.DatatableStyle.Parameter); dtParmBill.Rows.Add(new object[] { "V_BIZ_CODE", bill_bizcode }); dtParmBill.Rows.Add(new object[] { "V_FACILITY_CODE", bill_facilitycode }); dtParmBill.Rows.Add(new object[] { "V_POS_NO", bill_posno }); dtParmBill.Rows.Add(new object[] { "V_SALE_DATE", bill_saledate }); dtParmBill.Rows.Add(new object[] { "V_BILL_NO", bill_biilno }); dtParmBill.Rows.Add(new object[] { "V_SALE_YN", "Y" }); string billSeq = DataLayer.ExecuteSpScala("PKG_DAZAZ02.PR_IAA031MS_PAYSEQ", dtParmBill, DataLayer.MessageEncoding.Default); bill_payseq = billSeq; seqno = bill_payseq; dtBill = Pay.PayAddBill(bill_saledate, bill_bizcode, bill_facilitycode, bill_posno, bill_biilno, bill_saleyn, bill_payseq, bill_agreeyn, bill_saleamt, bill_pe_co_code, bill_id_no_code, bill_id_no, bill_agreeno, bill_saledate, bill_easyyn, empno, bill_date, ip); } this.Cursor = Cursors.WaitCursor; //seqno 순번을 가져와서 할당한다. //입금테이블 [DCA030MS] // 사업장코드 // 영업장코드 //관리번호 //관리순번// 영업일자 // == 일련번호// // 순번을 가져온다 //PR_KEY_SEQ DataTable dtParm = DataLayer.GetDataTableParameter(DataLayer.DatatableStyle.Parameter); dtParm.Rows.Add(new object[] { "V_BIZ_CODE", bizcode }); dtParm.Rows.Add(new object[] { "V_FACILITY_CODE", facilitycode }); dtParm.Rows.Add(new object[] { "V_MNG_NO", mngno }); dtParm.Rows.Add(new object[] { "V_MNG_SEQ", mngseq }); dtParm.Rows.Add(new object[] { "V_TASK_DATE", taskdate }); keyseq = DataLayer.ExecuteSpScala("PKG_DAZAZ02.PR_DCA030MS_KEY_SEQ", dtParm, DataLayer.MessageEncoding.Default); string deleteMemo = ""; if (r["AGREE_NO"].ToString().Trim() != "") { deleteMemo = "[승인번호:" + r["AGREE_NO"].ToString().Trim() + "] 사유: "; } DataTable dtcash = Pay.Room_110(bizcode, facilitycode, mngno, mngseq, taskdate, keyseq, rasiecode, paycode, payamt, itemstat, facipart, reference, seqno, deleteMemo + memo, //원승인번호 + 삭제 사유 co_facilitycode, co_mngcode, co_mngseq, co_taskdate, co_keyseq, st_facilitycode, st_mngno, st_mngseq, st_taskdate, st_keyseq, empno, ip, editstatus); string v_ret = "실행정보 없음"; try{ if (IsBillYn) //현금영수증 건이 있다면 { DataSet dsTmp = DataLayer.AddProdedcure(new DataTable[] { dtcash, dtBill }); v_ret = DataLayer.ExecuteSpScalaTransaction(dsTmp, "OK", DataLayer.MessageEncoding.Default); } else // 현금건만 있다면 { v_ret = DataLayer.ExecuteSpScala("PKG_DAZAZ02_DEV.PR_ROOM_110", dtcash, DataLayer.MessageEncoding.Default); } }catch (Exception ex) { // 현금 영수증 승인취소건이 있다면 // 현금영수증 승인을 시킨다.원복 MessageBox.Show(ex.Message); goto _lblRegCash; } if (v_ret != "OK") { Basic.ShowMessage(1, v_ret); goto _lblRegCash; } fnSelect(); Basic.ShowMessage(1, "취소 하였습니다."); /*********************************************************/ return; /*********************************************************/ _lblRegCash: if (IsBillYn) //현금 승인취소건이 있다 다시 현금영수증을 승인한다. { //현금영수증 승인요청 /***********************************************************************************************************************************************/ Van.RecivedData Regregreq = new Van.RecivedData(); using (BizVanComunication bizVanreg = new BizVanComunication()) { Regregreq = bizVanreg.SendData("PROJECT_D", JobKind.RegCash, bill_pe_co_code == "P" ? Van.CashKind.Persnal : Van.CashKind.Company, bill_id_no, "", "", payamt, "", "", "", "", bill_id_no_code == "1" ? CashGbn.Card : CashGbn.None); bizVanreg.Dispose(); } /***********************************************************************************************************************************************/ if (Regregreq.IsAgreeError) { Basic.ShowMessage(3, "[전산담당자에게 문의하세요]\n\r\n\r" + "현금영수증 승인 취소후 자료갱신시 에러가 있었습니다.. \n\nr" + "취소된 현금영수증 금액을 다시 승인처리 하는 도중 \n\r" + "아래와 같이 에러가 발생하엿습니다.\n\r\n\r" + "에러내용 : " + Regregreq.Message + "\n\r" + "식별코드 : " + bill_id_no_code == "P" ? "개인(P)" : "법인(C) \n\r" + "식별번호 : " + bill_id_no + "\n\r" + "금 액 : " + int.Parse(payamt).ToString("n0")); Van.Log.Log.SaveLog("현금영수증 취소 후 DB에러 - 현금영수 재 승인시 에러 - " + "식별코드 - " + bill_id_no_code + " / 식별번호 -" + bill_id_no + " / 금액 -" + payamt); return; } } } catch (Exception ex) { throw ex; } finally { this.Cursor = Cursors.Default; } }