📄 charge_card.cpp
字号:
#include "charge_card.h"#include "payment.flds.h"//-----------------------------------------------------------------//构造函数//-----------------------------------------------------------------CCardManage::CCardManage(char *pcInp,COracle *pcDatabase){ cDatabase = pcDatabase; pInp = pcInp;}//---------------------------------------------------------------------//服务PCSetCard实现函数,传入参数staff_id,area_id,acct_id,acct_seq_nbr//acc_nbr,card_no,opt_type,pay_type//---------------------------------------------------------------------void CCardManage::SetCard(){ char lsSql[2048],lsTemp[1024],lsErr[500]; char *lparm[9]; char staff_id[10],area_id[10],acct_id[20],seqnbr[4],acc_nbr[30]; char newcard[20],oldcard[20],opt_type[4],pay_type[4]; int i,isqlcode,lpnum,rpnum,rt; lpnum=9; rpnum=GetInputParm(pInp,lparm,100); if(rpnum!=lpnum) { lpfree(lparm,rpnum); strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n"); if(WriteLog(cDatabase,"-1","w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-2,lsTemp); } strcpy(staff_id,lparm[0]); strcpy(area_id,lparm[1]); strcpy(acct_id,lparm[2]); strcpy(seqnbr,lparm[3]); strcpy(acc_nbr,lparm[4]); strcpy(newcard,lparm[5]); strcpy(oldcard,lparm[6]); strcpy(opt_type,lparm[7]); strcpy(pay_type,lparm[8]); lpfree(lparm,rpnum); cDatabase->BeginTran(); //userlog(opt_type); if(opt_type[0]=='A') { //插入卡号与合同号对应记录 sprintf(lsSql, "INSERT INTO B_BARCODE_ACCT " "( bar_code, " "acct_id, " "contact_tel ) " "VALUES ( '%s', " "%s, " "'%s') " ,newcard,acct_id,acc_nbr); strcpy(lsTemp,"插入卡号与合同号对应记录时出错!\n"); } else if(opt_type[0]=='C' || opt_type[0]=='U') { //更新卡号与合同号对应记录 sprintf(lsSql, "UPDATE B_BARCODE_ACCT " "SET bar_code = '%s', " "contact_tel = '%s' " "WHERE acct_id = %s " ,newcard,acc_nbr,acct_id); strcpy(lsTemp,"更新卡号与合同号对应记录时出错!\n"); } else if(opt_type[0]=='X') { //删除卡号与合同号对应记录 sprintf(lsSql, "delete B_BARCODE_ACCT " "WHERE acct_id = %s " ,acct_id); strcpy(lsTemp,"删除卡号与合同号对应记录时出错!\n"); } else { strcpy(lsTemp,"缴费卡操作类型参数传输不正确!\n"); if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-2,lsTemp); } //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0||cDatabase->GetRowCount()!=1) { strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //插入缴费卡设置历史记录 sprintf(lsSql, "INSERT INTO B_BARCODE_STAFF " "( barcode_acct_list, " "acct_id, " "acct_seq_nbr, " "old_bar_code, " "bar_code, " "action, " "action_date, " "pay_state, " "staff_id, " "area_id ) " "VALUES ( SEQ_B_BARCODE_STAFF.NEXTVAL, " "%s, " "%s, " "'%s', " "'%s', " "'%s', " "sysdate, " "'%s', " "%s, " "%s) " ,acct_id,seqnbr,oldcard,newcard,opt_type,pay_type,staff_id,area_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0||cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"插入缴费卡设置历史记录时出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } cDatabase->Commit(); StrReturn(0,NULL);}//-----------------------------------------------------------------//服务PCStatCard实现函数,传入参数staff_id,start_date,end_date//-----------------------------------------------------------------void CCardManage::RecordList(char *staff_id,char *start_date,char *end_date){ char lsSql[2048],lsTemp[1024],lsErr[500]; int i,isqlcode; int rt; //检索缴费卡设置记录 sprintf(lsSql, "SELECT B_BARCODE_STAFF.barcode_acct_list , " "B_BARCODE_STAFF.acct_id , " "B_BARCODE_STAFF.acct_seq_nbr , " "B_BARCODE_STAFF.old_bar_code , " "B_BARCODE_STAFF.bar_code , " "B_BARCODE_STAFF.action , " "to_char(B_BARCODE_STAFF.action_date,'YYYY-MM-DD') , " "B_BARCODE_STAFF.pay_state " "FROM B_BARCODE_STAFF " "WHERE ( B_BARCODE_STAFF.staff_id = %s ) and " "( B_BARCODE_STAFF.action_date >= to_date('%s','YYYY-MM-DD HH24:MI:SS') ) and " "( B_BARCODE_STAFF.action_date < to_date('%s','YYYY-MM-DD HH24:MI:SS') ) " ,staff_id,start_date,end_date); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); //userlog("检索返回行数:%d",cDatabase->GetRowCount()); if(isqlcode<0) { strcpy(lsTemp,"检索缴费卡设置记录时出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()==0) { cDatabase->Commit(); StrReturn(100,NULL); } cDatabase->Commit(); StrReturn(0,cDatabase->GetData());}//-----------------------------------------------------------------//服务PCStatCard实现函数,传入参数staff_id,start_date,end_date//-----------------------------------------------------------------void CCardManage::CardStat(char *staff_id,char *start_date,char *end_date){ char lsSql[2048],lsTemp[1024],lsErr[500],lstmp[20]; int i,isqlcode; int rt; long len,retlong; //统计对象变量声明 char *sdc_num,*chc_num,*nsdc_num,*nchc_num; //缴费发卡统计 sprintf(lsSql, "SELECT count(*) " "FROM B_BARCODE_STAFF " "WHERE ( B_BARCODE_STAFF.action = 'A' ) AND " "( B_BARCODE_STAFF.pay_state = '1' ) and " "( B_BARCODE_STAFF.staff_id = %s ) and " "( B_BARCODE_STAFF.action_date >= to_date('%s','YYYY-MM-DD HH24:MI:SS') ) AND " "( B_BARCODE_STAFF.action_date < to_date('%s','YYYY-MM-DD HH24:MI:SS') ) " ,staff_id,start_date,end_date); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0) { strcpy(lsTemp,"缴费发卡出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } retlong=strlen(cDatabase->data->GetColData(1,1)); sdc_num=(char *)malloc(retlong+1); strcpy(sdc_num,cDatabase->data->GetColData(1,1)); //免费发卡统计 sprintf(lsSql, "SELECT count(*) " "FROM B_BARCODE_STAFF " "WHERE ( B_BARCODE_STAFF.action = 'A' ) AND " "( B_BARCODE_STAFF.pay_state = '0' ) and " "( B_BARCODE_STAFF.staff_id = %s ) and " "( B_BARCODE_STAFF.action_date >= to_date('%s','YYYY-MM-DD HH24:MI:SS') ) AND " "( B_BARCODE_STAFF.action_date < to_date('%s','YYYY-MM-DD HH24:MI:SS') ) " ,staff_id,start_date,end_date); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0) { strcpy(lsTemp,"免费发卡出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } retlong=strlen(cDatabase->data->GetColData(1,1)); nsdc_num=(char *)malloc(retlong+1); strcpy(nsdc_num,cDatabase->data->GetColData(1,1)); //缴费换卡统计 sprintf(lsSql, "SELECT count(*) " "FROM B_BARCODE_STAFF " "WHERE ( B_BARCODE_STAFF.action = 'C' ) AND " "( B_BARCODE_STAFF.pay_state = '1' ) and " "( B_BARCODE_STAFF.staff_id = %s ) and " "( B_BARCODE_STAFF.action_date >= to_date('%s','YYYY-MM-DD HH24:MI:SS') ) AND " "( B_BARCODE_STAFF.action_date < to_date('%s','YYYY-MM-DD HH24:MI:SS') ) " ,staff_id,start_date,end_date); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0) { strcpy(lsTemp,"缴费换卡出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } retlong=strlen(cDatabase->data->GetColData(1,1)); chc_num=(char *)malloc(retlong+1); strcpy(chc_num,cDatabase->data->GetColData(1,1)); //免费换卡统计 sprintf(lsSql, "SELECT count(*) " "FROM B_BARCODE_STAFF " "WHERE ( B_BARCODE_STAFF.action = 'C' ) AND " "( B_BARCODE_STAFF.pay_state = '0' ) and " "( B_BARCODE_STAFF.staff_id = %s ) and " "( B_BARCODE_STAFF.action_date >= to_date('%s','YYYY-MM-DD HH24:MI:SS') ) AND " "( B_BARCODE_STAFF.action_date < to_date('%s','YYYY-MM-DD HH24:MI:SS') ) " ,staff_id,start_date,end_date); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0) { strcpy(lsTemp,"免费换卡出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } retlong=strlen(cDatabase->data->GetColData(1,1)); nchc_num=(char *)malloc(retlong+1); strcpy(nchc_num,cDatabase->data->GetColData(1,1)); //构造返回数据字符串,连接顺序与客户端数据窗口的外部数据源变量声明顺序相关 strcpy(lsTemp,NULL); sprintf(lsTemp,"%s\t%s\t%s\t%s\n",sdc_num,nsdc_num,chc_num,nchc_num); if (sdc_num) free(sdc_num); if (nsdc_num) free(nsdc_num); if (chc_num) free(chc_num); if (nchc_num) free(nchc_num); cDatabase->Commit(); StrReturn(0,lsTemp);}//-----------------------------------------------------------------//服务PCGetCard实现函数,传入参数staff_id,acct_id//-----------------------------------------------------------------void CCardManage::GetCardInfo(){ char lsSql[2048],lsTemp[1024],lsErr[500]; char *lparm[4]; char staff_id[20],acct_id[20]; int i,isqlcode,lpnum,rpnum; lpnum=2; rpnum=GetInputParm(pInp,lparm,50); if(rpnum!=lpnum) { lpfree(lparm,rpnum); strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n"); if(WriteLog(cDatabase,"-1","w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-2,lsTemp); } strcpy(staff_id,lparm[0]); strcpy(acct_id,lparm[1]); lpfree(lparm,rpnum); //检索帐户及缴费卡信息 sprintf(lsSql, "SELECT B_ACCT.acct_id, " "B_ACCT.acct_seq_nbr, " "B_ACCT.acct_nbr_97, " "B_ACCT.payment_method, " "B_ACCT.state, " "B_ACCT.customer_name, " "B_ACCT.credit_grade, " "B_BARCODE_ACCT.bar_code, " "B_ACCT.acc_nbr " "FROM B_ACCT, " "B_BARCODE_ACCT " "WHERE ( B_ACCT.acct_id = B_BARCODE_ACCT.acct_id(+)) and " "( ( B_ACCT.acct_id = %s ) AND " "( B_ACCT.state = '10A' ) ) " ,acct_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); //userlog("检索返回行数:%d",cDatabase->GetRowCount()); if(isqlcode<0 || cDatabase->GetRowCount()>1 ) { strcpy(lsTemp,"检索帐户及缴费卡信息时出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_card_manage",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()==0) { cDatabase->Commit(); StrReturn(100,"帐户及缴费卡信息不存在!"); } cDatabase->Commit(); StrReturn(0,cDatabase->GetData());}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -