⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comp.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 EC
📖 第 1 页 / 共 2 页
字号:
				and host_ls_no = :local.host_ls_no;
			} else {
				$update cur_tran_ls set
				tran_flag = '1',	/* 已撤消 */
				rcv_settle_flag = 'Y',
				offline_flag = '0'
				where merchant_id = :local.merchant_id
				and terminal_id = :local.terminal_id
				and invoice_no = :local.invoice_no
				and host_ls_no = :local.host_ls_no;
			}
		} else {
			if (flag == 'K') {
				$update cur_tran_ls set
				saf_flag = '1',
				snd_settle_flag = 'Y',
				offline_flag = '0'
				where merchant_id = :local.merchant_id
				and terminal_id = :local.terminal_id
				and invoice_no = :local.invoice_no
				and host_ls_no = :local.host_ls_no;
			} else {
				$update cur_tran_ls set
				tran_flag = '1',	/* 已撤消 */
				snd_settle_flag = 'Y',
				offline_flag = '0'
				where merchant_id = :local.merchant_id
				and terminal_id = :local.terminal_id
				and invoice_no = :local.invoice_no
				and host_ls_no = :local.host_ls_no;
			}
		}
		if (SQLCODE) {
			$close local_cur;
			rollback_tran();
			daylog(ERROR, "Update posls error!");
			return(-1);
		}
		if (flag == 'C') {
			$select * into :center from center_ls
			where merchant_id = :local.merchant_id
			and terminal_id = :local.terminal_id
			and void_invoice_no = :local.invoice_no;
			if (SQLCODE) {
				$close local_cur;
				rollback_tran();
				daylog(ERROR, "Select center_ls error!");
				return(-1);
			}
			$delete from center_ls
			where merchant_id = :local.merchant_id
			and terminal_id = :local.terminal_id
			and void_invoice_no = :local.invoice_no;
			if (SQLCODE) {
				$close local_cur;
				rollback_tran();
				daylog(ERROR, "Delete center_ls error!");
				return(-1);
			}
			if (i) {
				strcpy(center.rcv_settle_flag, "Y");
				strcpy(center.snd_settle_flag, "N");
			} else {
				strcpy(center.rcv_settle_flag, "N");
				strcpy(center.snd_settle_flag, "Y");
			}
/****
			strcpy(center.flag1, "C");
*****/
			strcpy(center.offline_flag, "0");
			strcpy(center.edc_err_flag, "0");
			strcpy(center.snd_settle_date, local.snd_settle_date);
			strcpy(center.rcv_settle_date, local.rcv_settle_date);
			strcpy(center.acq_bank_id, local.acq_bank_id);
			strcpy(center.acq_host_id, local.acq_host_id);
			strcpy(center.iss_bank_id, local.iss_bank_id);
			strcpy(center.snd_bank_id, local.snd_bank_id);
			strcpy(center.snd_host_id, local.snd_host_id);
			strcpy(center.rcv_bank_id, local.rcv_bank_id);
			strcpy(center.rcv_host_id, local.rcv_host_id);
			$insert into cur_tran_ls values(:center);
			if (SQLCODE) {
				$close local_cur;
				rollback_tran();
				daylog(ERROR, "Insert cur_tran_ls error!");
				return(-1);
			}
		}
	}
	$close local_cur;

	$declare center_cur cursor for
	select * from center_ls
	where old_type = 0;
	$open center_cur;
	if (SQLCODE) {
		rollback_tran();
		daylog(ERROR, "Open center_cur error!");
		return(-1);
	}
	while (1) {
		$fetch center_cur into :center;
		if (SQLCODE == 100) break;
		if (SQLCODE) {
			$close center_cur;
			rollback_tran();
			daylog(ERROR, "Fetch center_cur error!");
			return(-1);
		}
		del_st_space("tran_ls", &center);

		i = s_chk(sys.bank_id, sys.host_id, center.acq_bank_id, center.acq_host_id);
		if (i < 0) {
			$close center_cur;
			rollback_tran();
			daylog(ERROR, "Check depend error!");
			return(-1);
		}
		$select res_flag into :flag from cur_tran_ls
		where merchant_id = :center.merchant_id
		and terminal_id = :center.terminal_id
		and invoice_no = :center.invoice_no
		and trace_no = :center.trace_no;
		if (SQLCODE < 0) {
			$close center_cur;
			rollback_tran();
			daylog(ERROR, "Select cur_tran_ls error!");
			return(-1);
		}
		if (SQLCODE == 100) {
			strcpy(tmp, center.snd_settle_date);
			if (i) {
				strcpy(center.rcv_settle_flag, "Y");
				strcpy(center.snd_settle_flag, "N");
				strcpy(center.rcv_bank_id,
				       center.snd_bank_id);
				strcpy(center.rcv_host_id,
				       center.snd_host_id);
				strcpy(center.snd_settle_date, sys.snd_settle_date);
			} else {
				strcpy(center.rcv_settle_flag, "N");
				strcpy(center.snd_settle_flag, "Y");
				strcpy(center.rcv_bank_id, center.iss_bank_id);
				strcpy(center.rcv_host_id, "00");
				strcpy(center.snd_settle_date, center.rcv_settle_date);
			}
/********
			strcpy(center.flag1, "C");
************/
			strcpy(center.offline_flag, "0");
			strcpy(center.edc_err_flag, "0");
			strcpy(center.snd_bank_id, sys.bank_id);
			strcpy(center.snd_host_id, sys.host_id);
			strcpy(center.rcv_settle_date, tmp);
			$insert into cur_tran_ls values(:center);
			if (SQLCODE) {
				$close center_cur;
				rollback_tran();
				daylog(ERROR, "Insert cur_tran_ls error!");
				return(-1);
			}
		} else {
			if (i)
				$update cur_tran_ls set
				saf_flag = '0',
				tran_flag = '0',
				rcv_settle_flag = 'Y',
				offline_flag = '0'
				where merchant_id = :center.merchant_id
				and terminal_id = :center.terminal_id
				and invoice_no = :center.invoice_no
				and trace_no = :center.trace_no;
			else
				$update posls set
				saf_flag = '0',
				tran_flag = '0',
				snd_settle_flag = 'Y',
				offline_flag = '0'
				where merchant_id = :center.merchant_id
				and terminal_id = :center.terminal_id
				and invoice_no = :center.invoice_no
				and trace_no = :center.trace_no;
			if (SQLCODE) {
				$close center_cur;
				rollback_tran();
				daylog(ERROR, "Update cur_tran_ls error!");
				return(-1);
			}
			if (flag == 'C') {
				if (i)
					$update cur_tran_ls set saf_flag = '1',
					rcv_settle_flag = 'Y',
					offline_flag = '0'
					where merchant_id = :center.merchant_id
					and terminal_id = :center.terminal_id
					and void_invoice_no = :center.invoice_no;
				else
					$update cur_tran_ls set saf_flag = '1',
					snd_settle_flag = 'Y',
					offline_flag = '0'
					where merchant_id = :center.merchant_id
					and terminal_id = :center.terminal_id
					and void_invoice_no = :center.invoice_no;
				if (SQLCODE) {
					$close center_cur;
					rollback_tran();
					daylog(ERROR, "Update cur_tran_ls error!");
					return(-1);
				}
				$delete from local_ls
				where merchant_id = :center.merchant_id
				and terminal_id = :center.terminal_id
				and void_invoice_no = :center.invoice_no;
				if (SQLCODE) {
					$close center_cur;
					rollback_tran();
					daylog(ERROR, "Delete local_ls error!");
					return(-1);
				}
			}
		}
	}
	$close center_cur;

	$declare local_cur_2 cursor for
	select * from local_ls
	where void_tran_type != 0;
	$open local_cur_2;
	if (SQLCODE) {
		rollback_tran();
		daylog(ERROR, "Open local_cur_2 error!");
		return(-1);
	}
	while (1) {
		$fetch local_cur_2 into :local;
		if (SQLCODE == 100) break;
		if (SQLCODE) {
			$close local_cur_2;
			rollback_tran();
			daylog(ERROR, "Fetch local_cur_2 error!");
			return(-1);
		}
		del_st_space("tran_ls", &local);
		i = s_chk(sys.bank_id, sys.host_id, center.acq_bank_id, center.acq_host_id);
		if (i < 0) {
			$close local_cur_2;
			rollback_tran();
			daylog(ERROR, "Check depend error!");
			return(-1);
		}
		if (i)
			$update cur_tran_ls set
			saf_flag = '0',
			rcv_settle_flag = 'Y',
			offline_flag = '0'
			where merchant_id = :local.merchant_id
			and terminal_id = :local.terminal_id
			and invoice_no = :local.invoice_no
			and trace_no = :local.trace_no;
		else
			$update cur_tran_ls set
			saf_flag = '0',
			snd_settle_flag = 'Y',
			offline_flag = '0'
			where merchant_id = :local.merchant_id
			and terminal_id = :local.terminal_id
			and invoice_no = :local.invoice_no
			and trace_no = :local.trace_no;
		if (SQLCODE) {
			$close local_cur_2;
			rollback_tran();
			daylog(ERROR, "Update cur_tran_ls error!");
			return(-1);
		}
	}
	$close local_cur_2;

	$declare center_cur_2 cursor for
	select * from center_ls
	where void_tran_type != 0;
	$open center_cur_2;
	if (SQLCODE) {
		rollback_tran();
		daylog(ERROR, "Open center_cur_2 error!");
		return(-1);
	}
	while (1) {
		$fetch center_cur_2 into :center;
		if (SQLCODE == 100) break;
		if (SQLCODE) {
			$close center_cur_2;
			rollback_tran();
			daylog(ERROR, "Fetch center_cur_2 error!");
			return(-1);
		}
		del_st_space("tran_ls", &center);
		i = s_chk(sys.bank_id, sys.host_id, center.acq_bank_id, center.acq_host_id);
		if (i < 0) {
			$close center_cur_2;
			rollback_tran();
			daylog(ERROR, "Check depend error!");
			return(-1);
		}
		strcpy(tmp, center.snd_settle_date);
		if (i) {
			strcpy(center.rcv_settle_flag, "Y");
			strcpy(center.snd_settle_flag, "N");
			strcpy(center.rcv_bank_id, center.snd_bank_id);
			strcpy(center.rcv_host_id, center.snd_host_id);
			strcpy(center.snd_settle_date, sys.snd_settle_date);
		} else {
			strcpy(center.rcv_settle_flag, "N");
			strcpy(center.snd_settle_flag, "Y");
			strcpy(center.rcv_bank_id, center.iss_bank_id);
			strcpy(center.rcv_host_id, "00");
			strcpy(center.snd_settle_date, center.rcv_settle_date);
		}
/******
		strcpy(center.flag1, "C");
******/
		strcpy(center.offline_flag, "0");
		strcpy(center.edc_err_flag, "0");
		strcpy(center.snd_bank_id, sys.bank_id);
		strcpy(center.rcv_settle_date, tmp);
		$insert into cur_tran_ls values(:center);
		if (SQLCODE) {
			$close center_cur_2;
			rollback_tran();
			daylog(ERROR, "Insert cur_tran_ls error!");
			return(-1);
		}
	}
	$close center_cur_2;

	commit_tran();

	return(0);
}

int s_chk(adm_bankid, adm_hostid, bankid, hostid)
	char *adm_bankid, adm_hostid;
	$parameter char *bankid, hostid;
{
	$char adm_bank_id[12];
	$char adm_host_id[3];

	if (!strcmp(adm_bankid, bankid) && !strcmp(adm_hostid, hostid))
		return(1);
	$select adm_bank_id, adm_host_id
	into :adm_bank_id, :adm_host_id
	from bank_info
	where bankid = :bankid and hostid = :hostid;
	if (SQLCODE) return(-1);
	DelSpace(adm_bank_id);
	DelSpace(adm_host_id);
	if (!strcmp(adm_bankid, adm_bank_id) &&
	    !strcmp(adm_hostid, adm_host_id) )
		return(1);
	return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -