/// <summary> /// 현금연수증 자동 승인취소 /// </summary> private void fnCashBillAutoCacel(bool cashbillyn , CashKind cashbillkind , string regno , string amt , string orgagreeno ) { try { if (cashbillyn) { //현금영수증 승인건이라면 //현금영수증을 취소한다. /***********************************************************************************************************************************************/ Van.RecivedData CashCancelreq = new RecivedData(); using (BizVanComunication bizVan = new BizVanComunication()) { CashCancelreq = bizVan.SendData("PROJECT_D", JobKind.CancelCash, cashbillkind, regno, "", "", amt, "", "", "", "", CashGbn.None); bizVan.Dispose(); } /***********************************************************************************************************************************************/ if (CashCancelreq.IsAgreeError) { //cashAgreeNo Basic.ShowMessage(1, "현금영수증 승인 후 DB 저장시 에러입니다.\n\r" + "현금영수증 승인 취소시 아래와 같은 에러로 취소하지 못하였습니다.\n\r\n\r" + "에러내용:\n\r" + CashCancelreq.Message + "\n\r\n\r" + "전산실에 문의하여 수기 취소바랍니다. \n\r\n\r" + "승인번호 : " + orgagreeno); Van.Log.Log.SaveLog("[현금영수증승인후 - DB 저장시에러 - 현금영수증 승인취소시 -에러 ] - 승인번호 : " + orgagreeno); } } return; } catch (Exception ex) { Basic.ShowMessage(3, ex.Message); } finally { this.Cursor = Cursors.Default; } }
/// <summary> /// 현금결제처리 /// </summary> private void fnPay110_Reg() { try { bool IsAgreeCash = false; bool IsClose = BizCommon.Gneral_D.IsRoomClose(); if (PayInfo.useKind == UseKind.Room && IsClose) { Basic.ShowMessage(1, "현재 마감작업중입니다. \n\r마감이 끝난후 작업을 계속하십시요"); return; } int amt = int.Parse(Basic.MaskReplace(txtCashAmt.Text.Trim())); if (amt <= 0) { Basic.ShowMessage(1, "결제금액을 입력하여 주십시요."); txtCashAmt.Focus(); return; } _Pay_UserCheck = ""; //담당자체크기능 // DAHAH05 f = new DAHAH05(Parm.CurrentUserInformation.roomTask.gsDFacility, "fn_Room_UserCheck"); f.Owner = this; f.ShowDialog(); if (_Pay_UserCheck == "") { Basic.ShowMessage(1, "담당자 확인이 되지 않았습니다."); return; } string empno = _Pay_UserCheck; if (Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_Facipart)) + Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_RoomNo)).Trim() == "") { Basic.ShowMessage(2, "Bill 번호를 생성 할 수 없습니다.\n\r\n\r동코드:" + PayInfomation.RoomInfo.C_Facipart + "\r\n객실번호:" + PayInfomation.RoomInfo.C_RoomNo); return; } Van.RecivedData Cashreqdata = new RecivedData(); //현금영수증 선택되었을대 if (chkCashBillYn.Checked) { /* if (lupCashBill_IdCode.EditValue.ToString() == "0") * { * DataRow[] dr = Parm.mDataTable.dtZx010ms.Select("HEAD = 'Z0028' AND DETAIL = '0' AND USE_YN = 'Y' "); * * if (dr.Length >= 0) txtCashBillRegNo.Text = dr[0]["ITEM1"].ToString(); * } * * if(lupCashBill_IdCode.EditValue.ToString() == "") * { * //현금영수증 * Basic.ShowMessage(1, "현금영수증 구분을 선택하여 주십시요"); * lupCashBill_IdCode.Focus(); * return; * } * else if(!chkCashSignPad.Checked && txtCashBillRegNo.Text.Trim().Length < 7) * { * //현금영수증 * Basic.ShowMessage(1, "식별번호를 정확하게 입력하여 주십시요"); * txtCashBillRegNo.Focus(); * return; * } */ Van.RecivedData reqdata = new RecivedData(); //식별번호를 싸인패드로 받는다면 if (chkCashSignPad.Checked) { using (BizVanComunication regNumber = new BizVanComunication()) { reqdata = regNumber.GetCashRegNumber("PROJECT_D", int.Parse(Basic.MaskReplace(txtCashAmt.Text.Trim())) ); regNumber.Dispose(); } txtCashBillRegNo.Text = reqdata.CashRegNumber; } /* if(txtCashBillRegNo.Text.Trim().Length < 7) * { * //현금영수증 * Basic.ShowMessage(1, "식별번호를 정확하게 입력하여 주십시요"); * txtCashBillRegNo.Focus(); * return; * } */ //현금영수증 승인요청 /***********************************************************************************************************************************************/ // if(BizCommon.CheckVan.CheckMode() == DialogResult.No) return; using (BizVanComunication bizVan = new BizVanComunication()) { Cashreqdata = bizVan.SendData("PROJECT_D", JobKind.RegCash, optCashBillKind.SelectedIndex < 1 ? Van.CashKind.Persnal :Van.CashKind.Company, txtCashBillRegNo.Text.Trim(), "", "", Basic.MaskReplace(txtCashAmt.Text.Trim()), "", "", "", "", lupCashBill_IdCode.EditValue.ToString() == "1" ? CashGbn.Card : CashGbn.None); bizVan.Dispose(); } /***********************************************************************************************************************************************/ if (Cashreqdata.IsAgreeError) { Basic.ShowMessage(1, Cashreqdata.Message); return; } //승인여부 //DB 작업 실패시 삭제하기위해서 IsAgreeCash = true; } else { if (cAutoReg.Checked) { DataRow[] dr = Parm.mDataTable.dtZx010ms.Select("HEAD = 'Z0028' AND DETAIL = '0' AND USE_YN = 'Y' "); Int32 _intInput = 0; Int32 _intZ0028 = 0; try { _intInput = Convert.ToInt32(txtCashAmt.Text.Replace(",", "")); } catch (Exception ex) { _intInput = -1; } try { _intZ0028 = Convert.ToInt32(dr[0]["ITEM2"].ToString()); } catch (Exception) { _intZ0028 = 0; } if (_intInput >= _intZ0028) { using (BizVanComunication bizVan = new BizVanComunication()) { Cashreqdata = bizVan.SendData("PROJECT_D", JobKind.RegCash, optCashBillKind.SelectedIndex < 1 ? Van.CashKind.Persnal : Van.CashKind.Company, dr[0]["ITEM1"].ToString(), "", "", Basic.MaskReplace(txtCashAmt.Text.Trim()), "", "", "", "", CashGbn.None); bizVan.Dispose(); } /***********************************************************************************************************************************************/ if (Cashreqdata.IsAgreeError) { Basic.ShowMessage(1, Cashreqdata.Message); return; } //승인여부 //DB 작업 실패시 삭제하기위해서 IsAgreeCash = true; } } } string cashAgreeNo = Cashreqdata.AgreeNo; this.Cursor = Cursors.WaitCursor; //현금결제 루틴을 태운다. string v_ret = fn_110(amt.ToString(), IsAgreeCash, BizCommon.Parm_Pay.PAY_CODE_CASH, cashAgreeNo, empno, PayInfomation.RoomInfo.C_Reference); this.Cursor = Cursors.Default; if (v_ret != "OK") { Basic.ShowMessage(1, v_ret); if (IsAgreeCash) { //현금영수증 승인건이라면 //현금영수증을 취소한다. /***********************************************************************************************************************************************/ Van.RecivedData CashCancelreq = new RecivedData(); using (BizVanComunication bizVan = new BizVanComunication()) { CashCancelreq = bizVan.SendData("PROJECT_D", JobKind.CancelCash, optCashBillKind.SelectedIndex < 1 ? Van.CashKind.Persnal :Van.CashKind.Company, txtCashBillRegNo.Text.Trim(), "", "", Basic.MaskReplace(txtCashAmt.Text.Trim()), "", "", "", "", lupCashBill_IdCode.EditValue.ToString() == "1" ? CashGbn.Card : CashGbn.None); bizVan.Dispose(); } /***********************************************************************************************************************************************/ if (CashCancelreq.IsAgreeError) { //cashAgreeNo Basic.ShowMessage(1, "현금영수증 승인 후 DB 저장시 에러입니다.\n\r" + "현금영수증 승인 취소시 아래와 같은 에러로 취소하지 못하였습니다.\n\r\n\r" + "에러내용:\n\r" + CashCancelreq.Message + "\n\r\n\r" + "전산실에 문의하여 수기 취소바랍니다. \n\r\n\r" + "승인번호 : " + cashAgreeNo); Van.Log.Log.SaveLog("[현금영수증승인후 - DB 저장시에러 - 현금영수증 승인취소시 -에러 ] - 승인번호 : " + cashAgreeNo); } } return; } txtCashAmt.Text = "0"; txtCashBillRegNo.Text = ""; Basic.ShowMessage(1, "저장 하였습니다."); RaiseDataReflashEvent(true); } catch (Exception ex) { Basic.ShowMessage(3, ex.Message); } finally { this.Cursor = Cursors.Default; } }
/// <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; } }
private void fn_120(DataRow r, string emp, string memo) { try { #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 //객실일때 마감여부 확인 bool IsClose = BizCommon.Gneral_D.IsRoomClose(); if (info.useKind == DAZAZ02.UseKind.Room && IsClose) { Basic.ShowMessage(1, "현재 마감작업중입니다. \n\r마감이 끝난후 작업을 계속하십시요"); return; } //카드정보를 읽어온다. DataTable dtParm1 = DataLayer.GetDataTableParameter(DataLayer.DatatableStyle.Parameter); dtParm1.Rows.Add(new object[] { "V_BIZ_CODE", Parm.CurrentUserInformation.BizInfo.BizCode }); dtParm1.Rows.Add(new object[] { "V_AGREE_NO", r["AGREE_NO"].ToString().Trim() }); DataSet dsCardinfo = DataLayer.ExecuteSpDataset("PKG_DAZAZ02.PR_CARD_INFO", dtParm1, DataLayer.MessageEncoding.Default); if (dsCardinfo.Tables[0].Rows.Count <= 0) { Basic.ShowMessage(1, "카드정보가 없습니다."); return; } /**********************************************************************************************/ //취소승인 /**********************************************************************************************/ // if(BizCommon.CheckVan.CheckMode() == DialogResult.No) return; string str = ""; string strcancelcardno = ""; if (dsCardinfo.Tables[0].Rows[0]["TRACK_TWO"].ToString().Trim() == "") { strcancelcardno = dsCardinfo.Tables[0].Rows[0]["CARD_NO"].ToString().Trim(); } else { strcancelcardno = dsCardinfo.Tables[0].Rows[0]["TRACK_TWO"].ToString().Trim(); } if (strcancelcardno == "") { Basic.ShowMessage(1, "카드정보가 없습니다."); return; } Van.RecivedData reqdata = new RecivedData(); using (BizVanComunication bizAgree = new BizVanComunication()) { reqdata = bizAgree.SendData("PROJECT_D", JobKind.CancelCard, CashKind.None, strcancelcardno, dsCardinfo.Tables[0].Rows[0]["VALID_THRU"].ToString().Trim(), dsCardinfo.Tables[0].Rows[0]["INSTALLMENT_CNT"].ToString().Trim(), dsCardinfo.Tables[0].Rows[0]["SALE_AMT"].ToString().Trim(), "", "", dsCardinfo.Tables[0].Rows[0]["AGREE_NO"].ToString().Trim(), DateTime.Parse(uDate.GetDateFromYYYY_MM_DD(dsCardinfo.Tables[0].Rows[0]["AGREE_DATE"].ToString().Trim())).ToString("yyyyMMdd"), CashGbn.None); bizAgree.Dispose(); } if (reqdata.IsAgreeError) { Basic.ShowMessage(3, "카드 승인을 취소할 수 없습니다. - \n\r" + reqdata.Message); return; } this.Cursor = Cursors.WaitCursor; try{ //승인 이후 에러건에 대한 메세지 처리를 무조건한다. string AgreeDates = reqdata.AgreeDate.Substring(0, 4) + "-" + reqdata.AgreeDate.Substring(4, 2) + "-" + reqdata.AgreeDate.Substring(6, 2); AgreeDates = DateTime.Parse(AgreeDates).ToString("yyyyMMdd"); string saledate = Parm.CurrentUserInformation.roomTask.gsTaskDate; string bizcode = Parm.CurrentUserInformation.BizInfo.BizCode; string facilitycode = r["FACILITY_CODE"].ToString().Trim(); string billno = Basic.MaskReplace(Num.GetNumberOnly(Faci)) + Basic.MaskReplace(Num.GetNumberOnly(RoomNo)); string saleyn = "Y"; string payseq = "일련번호현금의 seqno 에넎는다"; string agreeyn = "N"; string saleamt = (int.Parse(r["PAY_AMT"].ToString().Trim()) * -1).ToString().Trim(); string cardno = r["CARD_NO"].ToString().Trim(); string validthru = r["VALID_THRU"].ToString().Trim(); string installentcnt = r["INSTALLMENT_CNT"].ToString().Trim(); string agreeno = reqdata.AgreeNo; string orgagreeno = r["AGREE_NO"].ToString().Trim(); string card_co_code = reqdata.CardCoCode; string card_co_name = reqdata.CardCoName; string issu_co_code = reqdata.ISSUCoCode; string issu_co_name = reqdata.ISSUCoName; string card_join_no = reqdata.CardJoinNo; string agreedate = AgreeDates; //string agreetime = reqdata.AgreeDate.Substring(6,4); string agreetime = reqdata.AgreeDate.Length > 6 ? reqdata.AgreeDate.Substring(6, 4) : DateTime.Now.ToString("hhmm"); string track_Two = dsCardinfo.Tables[0].Rows[0]["TRACK_TWO"].ToString().Trim(); string easyyn = "N"; string tid = Parm.CurrentUserInformation.roomTask.gsCardTerminalID; string empno = Parm.CurrentUserInformation.id; string ip = Parm.CurrentUserInformation.ip; //채번한다. DataTable dtParm = DataLayer.GetDataTableParameter(DataLayer.DatatableStyle.Parameter); dtParm.Rows.Add(new object[] { "V_SALE_DATE", saledate }); dtParm.Rows.Add(new object[] { "V_BIZ_CODE", bizcode }); dtParm.Rows.Add(new object[] { "V_FACILITY_CODE", facilitycode }); dtParm.Rows.Add(new object[] { "V_POS_NO", "01" }); dtParm.Rows.Add(new object[] { "V_BILL_NO", billno }); dtParm.Rows.Add(new object[] { "V_SALE_YN", saleyn }); payseq = DataLayer.ExecuteSpScala("PKG_DAZAZ02.PR_IAA030MS_KEY_SEQ", dtParm, DataLayer.MessageEncoding.Default); //일단 넘길테이블에 담는다. DataTable dtCard = Pay.CreditCard(saledate, bizcode, facilitycode, billno, saleyn, payseq, agreeyn, saleamt, cardno, validthru, installentcnt, agreeno, orgagreeno, card_co_code, card_co_name, issu_co_code, issu_co_name, card_join_no, agreedate, agreetime, track_Two, easyyn, tid, empno, ip); //카드정보는 담았다 //현금정보를 동반해야되기때문에 현금정보를 담는다. 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 = "D"; //상태 string facipart = Faci; //동코드 string reference = reqdata.AgreeNo; //참고(카드번호,승인번호/락카번호/연회번호/상품권번호/회원번호) string seqno = payseq; //순번 string rmrk = "[승인번호:" + reqdata.AgreeNo + "] 사유:" + 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 editstatus = "3"; //작업구분 //seqno 순번을 가져와서 할당한다. //입금테이블 [DCA030MS] // 사업장코드 // 영업장코드 //관리번호 //관리순번// 영업일자 // == 일련번호// // 순번을 가져온다 //PR_KEY_SEQ DataTable dtParm3 = DataLayer.GetDataTableParameter(DataLayer.DatatableStyle.Parameter); dtParm3.Rows.Add(new object[] { "V_BIZ_CODE", bizcode }); dtParm3.Rows.Add(new object[] { "V_FACILITY_CODE", facilitycode }); dtParm3.Rows.Add(new object[] { "V_MNG_NO", mngno }); dtParm3.Rows.Add(new object[] { "V_MNG_SEQ", mngseq }); dtParm3.Rows.Add(new object[] { "V_TASK_DATE", taskdate }); keyseq = DataLayer.ExecuteSpScala("PKG_DAZAZ02.PR_DCA030MS_KEY_SEQ", dtParm3, DataLayer.MessageEncoding.Default); 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); DataSet dsTmp = DataLayer.AddProdedcure(new DataTable[] { dtcash, dtCard }); string v_ret = DataLayer.ExecuteSpScalaTransaction(dsTmp, "OK", DataLayer.MessageEncoding.Default); if (v_ret != "OK") { Basic.ShowMessage(1, v_ret); Basic.ShowMessage(1, "[전신실에 문의하세요] \n\r카드 승인은 취소 되었으나 자료갱신시 에러입니다.\n\tr" + "취소 승인번호 : " + reqdata.AgreeNo + "\n\r" + "\n\r에러내용 : " + v_ret); Van.Log.Log.SaveLog("카드 승인 취소 후 - DB 갱신에러 - 취소승인번호 : " + reqdata.AgreeNo + " / mngno:" + r["MNG_NO"].ToString().Trim() + " / mngseq:" + r["MNG_SEQ"].ToString().Trim() + " ERR:" + v_ret); } //영수증출력 bill_Print_Card(taskdate, bizcode, facilitycode, billno, keyseq, mngno, mngseq); } catch (Exception ex) { Basic.ShowMessage(1, "[전신실에 문의하세요] \n\r카드 승인은 취소 되었으나 자료갱신시 에러입니다.\n\tr" + "취소 승인번호 : " + reqdata.AgreeNo + "\n\r" + "\n\r에러내용 : " + ex.Message); Van.Log.Log.SaveLog("카드 승인 취소 후 - DB 갱신에러 - 취소승인번호 : " + reqdata.AgreeNo + " / mngno:" + r["MNG_NO"].ToString().Trim() + " / mngseq:" + r["MNG_SEQ"].ToString().Trim() + " ERR:" + ex.Message); } fnSelect(); Basic.ShowMessage(1, "취소 하였습니다."); } catch (Exception ex) { Basic.ShowMessage(3, ex.Message); } finally { this.Cursor = Cursors.Default; } }
/// <summary> /// 현금영수증 승인 /// </summary> private bool fnCashBill(bool cashbillyn , bool cashsignpadyn , string amt , CashKind cashbillkind , string cashbillregno , ref string refcashbillregno , ref string refIdNoCode , ref Van.RecivedData cashreqdata ) { try { bool IsClose = BizCommon.Gneral_D.IsRoomClose(); refIdNoCode = ""; //현금영수증 선택되었을대 if (cashbillyn) { Van.RecivedData reqdata = new RecivedData(); refcashbillregno = cashbillregno; //식별번호를 싸인패드로 받는다면 if (cashsignpadyn) { using (BizVanComunication regNumber = new BizVanComunication()) { reqdata = regNumber.GetCashRegNumber("PROJECT_D", int.Parse(Basic.MaskReplace(amt)) ); regNumber.Dispose(); } refcashbillregno = reqdata.CashRegNumber; } if (cashbillregno.Length < 7) { //현금영수증 Basic.ShowMessage(1, "식별번호를 정확하게 입력하여 주십시요"); return(false); } //현금영수증 승인요청 /***********************************************************************************************************************************************/ using (BizVanComunication bizVan = new BizVanComunication()) { cashreqdata = bizVan.SendData("PROJECT_D", JobKind.RegCash, cashbillkind, refcashbillregno.Trim(), "", "", Basic.MaskReplace(amt), "", "", "", "", lupCashBill_IdCode.EditValue.ToString() == "1" ? CashGbn.Card : CashGbn.None); bizVan.Dispose(); } /***********************************************************************************************************************************************/ if (cashreqdata.IsAgreeError) { Basic.ShowMessage(1, cashreqdata.Message); return(false); } //승인여부 //DB 작업 실패시 삭제하기위해서 //IsAgreeCash = true; } //자진 발급 else { DataRow[] dr = Parm.mDataTable.dtZx010ms.Select("HEAD = 'Z0028' AND DETAIL = '0' AND USE_YN = 'Y' "); int _intInput = 0; int _intZ0028 = 0; refcashbillregno = dr[0]["ITEM1"].ToString(); _intInput = int.Parse(amt.Replace(",", "")); refIdNoCode = dr[0]["DETAIL"].ToString(); try { _intZ0028 = int.Parse(dr[0]["ITEM2"].ToString()); } catch (Exception) { _intZ0028 = 0; } if (_intInput >= _intZ0028) { using (BizVanComunication bizVan = new BizVanComunication()) { cashreqdata = bizVan.SendData("PROJECT_D", JobKind.RegCash, cashbillkind, dr[0]["ITEM1"].ToString(), "", "", Basic.MaskReplace(amt.Trim()), "", "", "", "", CashGbn.None); bizVan.Dispose(); } if (cashreqdata.IsAgreeError) { Basic.ShowMessage(1, cashreqdata.Message); return(false); } //승인여부 //DB 작업 실패시 삭제하기위해서 //IsAgreeCash = true; } } //cashAgreeNo = Cashreqdata.AgreeNo; //cashAgreeDate = Cashreqdata.AgreeDate; this.Cursor = Cursors.WaitCursor; this.Cursor = Cursors.Default; return(true); } catch (Exception ex) { Basic.ShowMessage(3, ex.Message); return(false); } finally { this.Cursor = Cursors.Default; } }
/// <summary> /// 신용카드 승인 /// </summary> private void fnPay120_Reg() { try { int amt = int.Parse(Basic.MaskReplace(txtCreditAmt.Text.Trim())); /*if(this.txtCreditCardNo.Text.Trim().Length < 13) * { * * Basic.ShowMessage(1, "카드번호를 정확하게 입력하여 주십시요."); * txtCreditCardNo.Focus(); * return; * } * else */if (amt <= 0) { Basic.ShowMessage(1, "결제금액을 입력하여 주십시요."); txtCreditAmt.Focus(); return; } else if (Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_Facipart)) + Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_RoomNo)).Trim() == "") { Basic.ShowMessage(2, "Bill 번호를 생성 할 수 없습니다.\n\r\n\r동코드:" + PayInfomation.RoomInfo.C_Facipart + "\r\n객실번호:" + PayInfomation.RoomInfo.C_RoomNo); return; } //객실이 마감되었는지 체크한다. bool IsClose = BizCommon.Gneral_D.IsRoomClose(); if (PayInfo.useKind == UseKind.Room && IsClose) { Basic.ShowMessage(1, "현재 마감작업중입니다. \n\r마감이 끝난후 작업을 계속하십시요"); return; } string SendCardNo = ""; _TrackTowInfo = ""; /* if(txtCreditCardNo.Text.Trim().IndexOf("=") < 0) * { * * SendCardNo = txtCreditCardNo.Text.Trim(); * * if( this.txtCreditCardScope.Text.Trim() == "" && * this.txtCreditCardNo.Text.Trim().IndexOf("=") < 0 ) * { * Basic.ShowMessage(1, "키인 입력입니다 - 유효기간을 입력하세요."); * txtCreditCardScope.Focus(); * return; * } * * } * else * { * if (txtCreditCardNo.Text.ToUpper().StartsWith("C")) * txtCreditCardNo.Text = txtCreditCardNo.Text.Remove(0, 1); * _TrackTowInfo = txtCreditCardNo.Text.Trim(); * SendCardNo = txtCreditCardNo.Text.Trim(); * * string str1 = this.txtCreditCardNo.Text.Trim().Split('=')[0]; * string str2 = this.txtCreditCardNo.Text.Trim().Split('=')[1]; * * this.txtCreditCardNo.Text = str1; * * if(str2.Trim().Length < 4) * { * Basic.ShowMessage(1, "MSR 입력 - 카드번호가 잘못되었습니다."); * return; * } * string strscope = str2.Trim().Substring(0,4); * this.txtCreditCardScope.EditValue = strscope ; * * } */ //유효기간 string scope = Basic.MaskReplace(txtCreditCardScope.Text.Trim()); if (scope.Length < 4) { scope = "9999"; } #region 서명모드 /******************************************************************************/ // 싸인패드가 체크 되어 있다면 서명모드 시작 /******************************************************************************/ byte[] b = null; string SignDataString = ""; /* * Van.RecivedData rvcSign = new RecivedData(); * bool IsSucess = true; * if(this.chkCreditSignPad.Checked) * { * using(BizVanComunication bizVan = new BizVanComunication()) * { * * string reqdatas = bizVan.GetVanMakeCardProtocol( "PROJECT_D" , * JobKind.RegCard, * CashKind.None, * SendCardNo , * scope, * Basic.MaskReplace(txtCreditAmtSplit.Text.Trim()), * Basic.MaskReplace(txtCreditAmt.Text.Trim()) , * "1" , * "","","", CashGbn.None ); * * * IsSucess = bizVan.GetSign( "PROJECT_D", * int.Parse(Basic.MaskReplace(txtCreditAmt.Text.Trim())) , * ref rvcSign, * reqdatas); * bizVan.Dispose(); * } * * } * if(!IsSucess) return; */ /******************************************************************************/ // 서명모드 종료 /******************************************************************************/ #endregion /* * SignDataString = rvcSign.SignStringData; * b = rvcSign.SignData; */ //카드승인처리 시작 /***********************************************************************************************************************************************/ Van.RecivedData reqdata = new RecivedData(); /* * if(rvcSign.IsSignPadAgree) * { * reqdata = rvcSign; * if(reqdata.IsAgreeError) * { * MessageBox.Show(reqdata.Message); * return; * } * } * else * */ { using (BizVanComunication bizAgree = new BizVanComunication()) { reqdata = bizAgree.SendData("PROJECT_D", JobKind.RegCard, CashKind.None, SendCardNo, scope, Basic.MaskReplace(txtCreditAmtSplit.Text.Trim()), Basic.MaskReplace(txtCreditAmt.Text.Trim()), "1", SignDataString, "", "", CashGbn.None); bizAgree.Dispose(); } /***********************************************************************************************************************************************/ if (reqdata.IsAgreeError) { MessageBox.Show(reqdata.Message); return; } } this.Cursor = Cursors.WaitCursor; // 승인이 났다. //DB처리 string AgreeDate = reqdata.AgreeDate.Substring(0, 4) + "-" + reqdata.AgreeDate.Substring(4, 2) + "-" + reqdata.AgreeDate.Substring(6, 2); AgreeDate = DateTime.Parse(AgreeDate).ToString("yyyyMMdd"); string outSeq = ""; string v_ret = fn_Card(Basic.MaskReplace(txtCreditAmt.Text.Trim()), // txtCreditCardNo.Text.Trim(), Basic.MaskReplace(reqdata.CashRegNumber), Basic.MaskReplace(scope), reqdata.CardCoCode, reqdata.CardCoName, reqdata.ISSUCoCode, reqdata.ISSUCoName, reqdata.CardJoinNo, reqdata.AgreeNo, this.txtCreditAmtSplit.Text.Trim() == "" ? "0" : this.txtCreditAmtSplit.Text.Trim(), AgreeDate, reqdata.AgreeDate.Length > 6 ? reqdata.AgreeDate.Substring(6, 4) : DateTime.Now.ToString("hhmm"), _TrackTowInfo, "N", Parm.CurrentUserInformation.roomTask.gsCardTerminalID, Parm.CurrentUserInformation.id, ref outSeq); //DB 처리에러시 취소승인을 //딴다. if (v_ret != "OK") { Van.RecivedData reqdataCancel = new RecivedData(); using (BizVanComunication bizAgree = new BizVanComunication()) { reqdataCancel = bizAgree.SendData("PROJECT_D", JobKind.CancelCard, CashKind.None, _TrackTowInfo, scope, Basic.MaskReplace(txtCreditAmtSplit.Text.Trim()), Basic.MaskReplace(txtCreditAmt.Text.Trim()), "", "", reqdata.AgreeNo, reqdata.AgreeDate.Substring(0, 6), CashGbn.None); bizAgree.Dispose(); } /***********************************************************************************************************************************************/ if (reqdataCancel.IsAgreeError) { Basic.ShowMessage(3, "승인 후 DB 저장시 에러 입니다." + System.Environment.NewLine + "승인번호는 : " + reqdata.AgreeNo + " 입니다." + System.Environment.NewLine + "현재 내용을 CTL + C 로 복사하여 메모장에 붙여 넣으세요 - 붙여넣으신 내용으로 전산실에 문의하세요" + System.Environment.NewLine + "전산실에 문의하여 수기로 승인 취소를 하십시요" + System.Environment.NewLine + System.Environment.NewLine + "승인취소 에러 내용" + System.Environment.NewLine + reqdata.Message + System.Environment.NewLine + System.Environment.NewLine + "DB 처리 에러내용 :" + System.Environment.NewLine + v_ret); Van.Log.Log.SaveLog("[승인후 DB 저장에러 - 승인취소실패] 에러내용 - " + reqdataCancel.Message); Van.Log.Log.SaveLog("[승인후 DB 저장에러 - 승인취소실패] 취소전문 - $" + reqdataCancel.FullSendData + "$"); return; } Basic.ShowMessage(2, v_ret); return; } //메인데이터가 들어갔다면 싸인데이터도 넣어준다. //싸인데이터가 있다면 if (b != null) { string Query = @"INSERT INTO IAA030DT( SALE_DATE , BIZ_CODE , FACILITY_CODE , POS_NO , BILL_NO , SALE_YN , PAY_SEQ , SIGN_IMG , U_EMP_NO , U_IP ) VALUES ( :V_SALE_DATE , :V_BIZ_CODE , :V_FACILITY_CODE , :V_POS_NO , :V_BILL_NO , :V_SALE_YN , :V_PAY_SEQ , :V_SIGN_IMG , :V_U_EMP_NO , :V_U_IP )"; DataTable dtParm = DataLayer.GetDataTableParameter(DataLayer.DatatableStyle.Parameter); dtParm.Rows.Add(":V_SALE_DATE", PayInfomation.SaleDate); dtParm.Rows.Add(":V_BIZ_CODE", PayInfomation.RoomInfo.C_Bizcode); dtParm.Rows.Add(":V_FACILITY_CODE", PayInfomation.RoomInfo.C_Facilitycode); dtParm.Rows.Add(":V_POS_NO", "01"); dtParm.Rows.Add(":V_BILL_NO", Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_Facipart)) + Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_RoomNo))); dtParm.Rows.Add(":V_SALE_YN", "Y"); dtParm.Rows.Add(":V_PAY_SEQ", outSeq); dtParm.Rows.Add(":V_SIGN_IMG", "#"); dtParm.Rows.Add(":V_U_EMP_NO", Parm.CurrentUserInformation.id); dtParm.Rows.Add(":V_U_IP", Parm.CurrentUserInformation.ip); //bill_Print_Card(); try { int ret = DataLayer.ExecuteNonQuery(Query, dtParm, b, DataLayer.MessageEncoding.Default); } catch (Exception ex) { Basic.ShowMessage(2, "카드승인은 정상승인 처리되었으며 자료도 정상저장 되었습니다. \n\r싸인 이미지만 DB 에 저장하지 못했습니다.\n\r" + ex.Message); } try { string _strBillNo = Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_Facipart)) + Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_RoomNo)); bill_Print_Card(outSeq, _strBillNo); } catch (Exception ex) { Basic.ShowMessage(2, "영수증 출력중 에러!"); } } else // 사인데이터가 없어도 영수증 출력은 해준다로 변경함. (2015.07.15 정수환) { string _strBillNo = Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_Facipart)) + Basic.MaskReplace(Num.GetNumberOnly(PayInfomation.RoomInfo.C_RoomNo)); bill_Print_Card(outSeq, _strBillNo); } Basic.ShowMessage(1, "저장 하였습니다."); txtCreditCardNo.Text = ""; txtCreditCardScope.Text = ""; txtCreditAmtSplit.Text = "0"; txtCreditAmt.Text = "0"; _TrackTowInfo = ""; RaiseDataReflashEvent(true); } catch (Exception ex) { Basic.ShowMessage(3, ex.Message); } finally { this.Cursor = Cursors.Default; } }