|
|
|
|
using System;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Data.SqlClient;
|
|
|
|
|
using WebSqlHelper;
|
|
|
|
|
using DSWeb.Models;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
namespace DSWeb.EntityDA
|
|
|
|
|
{
|
|
|
|
|
public class FeeRecvSettleDA
|
|
|
|
|
{
|
|
|
|
|
//ch_fee_settlement
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_GID = "@gid";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_BILL_NO = "@bill_no";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_BILL_DATE = "@bill_date";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_SETTLE_MODE = "@settle_mode";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_CUSTOMER_NAME = "@customer_name";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_SETTLE_TYPE = "@settle_type";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_AMOUNT_RMB = "@amount_rmb";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_ACCOUNT_RMB = "@account_rmb";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_RATE = "@rate";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_AMOUNT_USD = "@amount_usd";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_ACCOUNT_USD = "@account_usd";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_BILL_TYPE = "@bill_type";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_VOUCHER_NO = "@voucher_no";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_SETTLE_USER = "@settle_user";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_SETTLE_TIME = "@settle_time";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_AUDIT_USER = "@audit_user";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_AUDIT_TIME = "@audit_time";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_IS_EXPORT = "@is_export";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_FINANCIAL_VOUCHER = "@financial_voucher";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_BILL_STATUS = "@bill_status";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_REMARK = "@remark";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_IS_DELETE = "@is_delete";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_DELETE_USER = "@delete_user";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_DELETE_TIME = "@delete_time";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_LIKE = "@like";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT_COMPANY_ID = "@company_id";
|
|
|
|
|
//ch_fee_settle_link
|
|
|
|
|
private const string PARM_FEE_SETTLE_LINK = "@gid";
|
|
|
|
|
//ch_fee_do
|
|
|
|
|
private const string PARM_FEE_DO_GID = "@gid";
|
|
|
|
|
private const string PARM_FEE_DO_BILL_NO = "@bill_no";
|
|
|
|
|
private const string PARM_FEE_DO_BSNO = "@bsno";
|
|
|
|
|
private const string PARM_FEE_DO_MBL_NO = "@mbl_no";
|
|
|
|
|
private const string PARM_FEE_DO_HBL_NO = "@nbl_no";
|
|
|
|
|
private const string PARM_FEE_DO_CUSTOMER_NAME = "@customer_name";
|
|
|
|
|
private const string PARM_FEE_DO_BSTYPE = "@bs_type";
|
|
|
|
|
private const string PARM_FEE_DO_FEE_ID = "@fee_id";
|
|
|
|
|
private const string PARM_FEE_DO_FEE_NAME = "@fee_name";
|
|
|
|
|
private const string PARM_FEE_DO_CURRENCY = "@currency";
|
|
|
|
|
private const string PARM_FEE_DO_AMOUNT = "@amount";
|
|
|
|
|
private const string PARM_FEE_DO_DO_AMOUNT = "@do_amount";
|
|
|
|
|
private const string PARM_FEE_DO_FEE_TYPE = "@fee_type";
|
|
|
|
|
private const string PARM_FEE_DO_CATEGORY = "@category";
|
|
|
|
|
private const string PARM_FEE_DO_BILL_STATUS = "@bill_status";
|
|
|
|
|
private const string PARM_FEE_DO_REMARK = "@remark";
|
|
|
|
|
private const string PARM_FEE_DO_EXCHANGE_RATE = "@exchange_rate";
|
|
|
|
|
private const string PARM_FEE_DO_COMPANY_ID = "@company_id";
|
|
|
|
|
private const string PARM_FEE_DO_DELETE_USER = "@delete_user";
|
|
|
|
|
private const string PARM_FEE_DO_ORIG_AMOUNT = "@orig_amount";
|
|
|
|
|
//ch_fee
|
|
|
|
|
private const string PARM_FEE_GID = "@gid";
|
|
|
|
|
private const string PARM_FEE_STATUS = "@fee_status";
|
|
|
|
|
private const string PARM_FEE_SETTLEMENT = "@settlement";
|
|
|
|
|
//fee_gain
|
|
|
|
|
private const string PARM_FEE_GAIN_STL_CR_RMB = "@stl_crrmb";
|
|
|
|
|
private const string PARM_FEE_GAIN_STL_CR_USD = "@stl_crusd";
|
|
|
|
|
private const string PARM_FEE_GAIN_STL_CR_TTL = "@stl_crttl";
|
|
|
|
|
private const string PARM_FEE_GAIN_BSNO = "@bsno";
|
|
|
|
|
//run_fee_settlement
|
|
|
|
|
private const string PARM_RUN_FEE_SETTLEMENT_GID = "@gid";
|
|
|
|
|
private const string PARM_RUN_FEE_SETTLEMENT_BILL_NO = "@bill_no";
|
|
|
|
|
private const string PARM_RUN_FEE_SETTLEMENT_APPLICANT = "@applicant";
|
|
|
|
|
private const string PARM_RUN_FEE_SETTLEMENT_SETTLE_USER = "@settle_user";
|
|
|
|
|
private const string PARM_RUN_FEE_SETTLEMENT_REMARK = "@remark";
|
|
|
|
|
private const string PARM_RUN_FEE_SETTLEMENT_PAYSETTLE_ID = "@paysettle_id";
|
|
|
|
|
private const string PARM_RUN_FEE_SETTLEMENT_COMPANY_ID = "@company_id";
|
|
|
|
|
//run_fee_do
|
|
|
|
|
private const string PARM_RUN_FEE_DO_BILL_NO = "@bill_no";
|
|
|
|
|
private const string PARM_RUN_FEE_DO_RUN_SETTLE_ID = "@runsettle_id";
|
|
|
|
|
//结算关联表ch_fee_settle_link
|
|
|
|
|
private const string PARM_CH_FEE_SETTLE_LINK = "@gid";
|
|
|
|
|
private const string PARM_CH_FEE_SETTLE_SETTLE_ID = "@settle_id";
|
|
|
|
|
private const string PARM_CH_FEE_SETTLE_TYPE = "@type";
|
|
|
|
|
private const string PARM_CH_FEE_SETTLE_RELATION_SUB_ID = "@relation_sub_id";
|
|
|
|
|
private const string PARM_CH_FEE_SETTLE_CREATE_USER = "@create_user";
|
|
|
|
|
private const string PARM_CH_FEE_SETTLE_CREATE_TIME = "@create_time";
|
|
|
|
|
//ch_fee_RecvApplication
|
|
|
|
|
private const string PARM_CH_FEE_PAY_APP_GID = "@gid";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private const string SQL_INSERT_FEE_DO = " INSERT INTO ch_fee_do(GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY,AMOUNT,DOAMOUNT,FEETYPE,CATEGORY,BILLSTATUS,REMARK,EXCHANGERATE,COMPANYID,ORIGAMOUNT) "
|
|
|
|
|
+ " VALUES(@gid,@bill_no,@bsno,@mbl_no,@nbl_no,@customer_name,@bs_type,@fee_id,@fee_name,@currency,@amount,@do_amount,@fee_type,@category,@bill_status,@remark,@exchange_rate,@company_id,@orig_amount) ";
|
|
|
|
|
|
|
|
|
|
private const string SQL_UPDATE_FEE = " UPDATE ch_fee SET ch_fee.SETTLEMENT = ch_fee.SETTLEMENT+@settlement,ch_fee.FEESTATUS = C.FEESTATUS,ch_fee.INVOICENUM = @INVOICENUM "
|
|
|
|
|
+ " FROM "
|
|
|
|
|
+ " (SELECT A.GID,CASE WHEN B.AMOUNT < A.AMOUNT THEN CASE WHEN B.AMOUNT+A.SETTLEMENT = A.AMOUNT THEN 9 ELSE 8 END ELSE "
|
|
|
|
|
+ " CASE WHEN B.AMOUNT = A.AMOUNT THEN 9 END END as FEESTATUS FROM ch_fee as A INNER JOIN ch_fee_do as B ON A.GID = B.FEEID WHERE B.GID = @gid) as C "
|
|
|
|
|
+ " WHERE C.GID = ch_fee.GID ";
|
|
|
|
|
|
|
|
|
|
//合计更新利润信息表
|
|
|
|
|
private const string SQL_UPDATE_FEE_GAIN = " UPDATE fee_gain SET STLCRRMB = ISNULL(STLCRRMB,0) + @stl_crrmb,STLCRUSD = ISNULL(STLCRUSD,0) + @stl_crusd,STLCRTTL = ISNULL(STLCRTTL,0) + @stl_crttl WHERE BSNO = @bsno ";
|
|
|
|
|
private string SQL_SELECT_FEE_SETTLEMENT_BY_GID = " SELECT GID, BILLNO, BILLDATE, SETTLEMODE, CUSTOMERNAME, SETTLETYPE, AMOUNTRMB, ACCOUNTRMB, RATE, AMOUNTUSD, ACCOUNTUSD,"
|
|
|
|
|
+ " BILLTYPE, VOUCHERNO, SETTLEUSER, SETTLETIME, AUDITUSER, AUDITTIME, ISEXPORT, FINANCIALVOUCHER, BILLSTATUS, REMARK FROM ch_fee_settlement WHERE GID = @gid";
|
|
|
|
|
|
|
|
|
|
private const string SQL_VALID_CH_FEE_SETTLEMENT_BY_RUNFEEDO = " SELECT COUNT(A.GID)-SUM(CASE WHEN C.AMOUNT = C.SETTLEMENT THEN -1 ELSE CASE WHEN (C.AMOUNT - C.SETTLEMENT) < A.ORIGAMOUNT THEN -1 ELSE "
|
|
|
|
|
+ " CASE WHEN (C.AMOUNT - C.SETTLEMENT) >= A.ORIGAMOUNT THEN 1 END END END) FROM run_fee_do as A INNER JOIN run_fee_settlement as B "
|
|
|
|
|
+ " ON A.RUNSETTLEID = B.GID INNER JOIN ch_fee as C ON A.FEEID = C.GID WHERE B.GID = @gid ";
|
|
|
|
|
//删除运行结算信息表
|
|
|
|
|
private const string SQL_DELETE_RUN_FEE_SETTLEMENT_BY_GID = " DELETE FROM run_fee_settlement WHERE GID = @gid ";
|
|
|
|
|
//删除运行结算明细表信息
|
|
|
|
|
private const string SQL_DELETE_RUN_FEE_DO_BY_RUNSETTLE_ID = " DELETE FROM run_fee_do WHERE RUNSETTLEID = @runsettle_id ";
|
|
|
|
|
//将运行结算明细表中的费用明细插入到ch_fee_do
|
|
|
|
|
private const string SQL_INSERT_CH_FEE_FEE_DO_RUN = " INSERT INTO ch_fee_do(GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY,AMOUNT,DOAMOUNT,FEETYPE,CATEGORY,BILLSTATUS,"
|
|
|
|
|
+ " REMARK,CREATETIME,EXCHANGERATE,ORIGCURRENCY,ORIGAMOUNT,INVOICESETTLENO,COMPANYID) "
|
|
|
|
|
+ " SELECT newid(),@bill_no,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY,AMOUNT,DOAMOUNT,FEETYPE,CATEGORY,BILLSTATUS,REMARK,GETDATE(), "
|
|
|
|
|
+ " EXCHANGERATE,ORIGCURRENCY,ORIGAMOUNT,INVOICESETTLENO,COMPANYID FROM run_fee_do WHERE RUNSETTLEID = @runsettle_id ";
|
|
|
|
|
|
|
|
|
|
private const string SQL_UPDATE_CH_FEE_BY_RUN_FEE_DO = " UPDATE ch_fee SET ch_fee.SETTLEMENT = ISNULL(ch_fee.SETTLEMENT,0) + ch_fee_do.ORIGAMOUNT,ch_fee.FEESTATUS = 9 FROM ch_fee_do WHERE ch_fee.GID = ch_fee_do.FEEID AND ch_fee_do.BILLNO = @bill_no AND ch_fee_do.COMPANYID = @company_id ";
|
|
|
|
|
|
|
|
|
|
private const string SQL_SELECT_CH_FEE_PAY_APPLICATION_BILLNO = " SELECT BILLNO FROM ch_fee_settlement WHERE GID = @gid ";
|
|
|
|
|
|
|
|
|
|
//将已保存的未结算收费插入到费用结算表
|
|
|
|
|
private const string SQL_INSERT_CH_FEE_SETTLEMENT_RUN = "INSERT INTO ch_fee_settlement(GID, BILLNO, BILLDATE, SETTLEMODE, CUSTOMERNAME, SETTLETYPE, AMOUNTRMB, ACCOUNTRMB, RATE, AMOUNTUSD, ACCOUNTUSD,"
|
|
|
|
|
+ " BILLTYPE, VOUCHERNO, SETTLEUSER, SETTLETIME, ISEXPORT, FINANCIALVOUCHER, BILLSTATUS, REMARK,COMPANYID)"
|
|
|
|
|
+ " SELECT @paysettle_id,@bill_no,GETDATE(),SETTLEMODE,CUSTOMERNAME,SETTLETYPE,AMOUNTRMB,ACCOUNTRMB,RATE,AMOUNTUSD,ACCOUNTUSD,"
|
|
|
|
|
+ " BILLTYPE,VOUCHERNO,@settle_user,GETDATE(),ISEXPORT,FINANCIALVOUCHER,BILLSTATUS,REMARK,@company_id "
|
|
|
|
|
+ " FROM run_fee_settlement WHERE GID = @gid ";
|
|
|
|
|
|
|
|
|
|
//还原已经进行收费结算的费用(撤销收费结算)
|
|
|
|
|
private const string SQL_UPDATE_CH_FEE_FOR_CANCELPAYSETTLE = " UPDATE ch_fee SET ch_fee.FEESTATUS = (CASE WHEN ch_fee_do.ORIGAMOUNT = ch_fee.SETTLEMENT THEN 0 ELSE 8 END), "
|
|
|
|
|
+ " ch_fee.SETTLEMENT = ISNULL(ch_fee.SETTLEMENT,0) - ch_fee_do.ORIGAMOUNT "
|
|
|
|
|
+ " FROM ch_fee_do WHERE ch_fee.GID = ch_fee_do.FEEID AND ch_fee_do.BILLNO = @bill_no AND COMPANYID = @company_id ";
|
|
|
|
|
|
|
|
|
|
//删除收费结算费用明细表(撤销收费结算)
|
|
|
|
|
private const string SQL_DELETE_CH_FEE_DO = " UPDATE ch_fee_do SET ISDELETED = 1,DELETEUSER = @delete_user,DELETETIME = GETDATE() WHERE BILLNO = @bill_no AND COMPANYID = @company_id ";
|
|
|
|
|
//删除收费结算表(撤销收费结算)
|
|
|
|
|
private const string SQL_DELETE_CH_FEE_SETTLEMENT = " UPDATE ch_fee_settlement SET ISDELETE = 1,DELETEUSER = @delete_user,DELETETIME = GETDATE() WHERE BILLNO = @bill_no AND COMPANYID = @company_id ";
|
|
|
|
|
//获取收费结算来源
|
|
|
|
|
private const string SQL_VALID_PAY_SETTLE_SOURCE = " SELECT COUNT(*) FROM ch_fee_settle_link WHERE SETTLEID = @settle_id ";
|
|
|
|
|
|
|
|
|
|
//更新收费申请状态从已经结算更新为已审核(撤销结算)
|
|
|
|
|
//private const string SQL_UPDATE_CH_FEE_PAY_APP_FOR_CANCEL = " UPDATE ch_fee_RecvApplication SET BILLSTATUS = 0 FROM ch_fee_settle_link WHERE ch_fee_settle_link.RELATIONSUBID = ch_fee_RecvApplication.GID AND SETTLEID = @settle_id ";
|
|
|
|
|
//更新收费申请相关的费用状态为激活状态(撤销结算)
|
|
|
|
|
private const string SQL_UPDATE_CH_FEE_DO_APP_FOR_CANCEL = " UPDATE ch_fee_do SET ISDELETED = 0 FROM ch_fee_RecvApplication WHERE ch_fee_RecvApplication.BILLNO = ch_fee_do.BILLNO AND ch_fee_RecvApplication.COMPANYID = ch_fee_do.COMPANYID AND ch_fee_RecvApplication.GID = @gid ";
|
|
|
|
|
//删除合并结算关联信息表记录
|
|
|
|
|
private const string SQL_DELETE_CH_FEE_SETTLE_LINK = " DELETE FROM ch_fee_settle_link WHERE SETTLEID = @settle_id ";
|
|
|
|
|
|
|
|
|
|
#region 插入收费结算
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 插入收费结算
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="tempFeeSettlementEntity">收费结算实体类</param>
|
|
|
|
|
/// <returns>值1-插入完成 值-1插入失败</returns>
|
|
|
|
|
public int InsertFeePaySettle(IList<FeeDoEntity> tempFeeDoEntities, FeeSettlementEntity tempFeeSettlementEntity)
|
|
|
|
|
{
|
|
|
|
|
int iResult = 0;
|
|
|
|
|
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string strLastBillNo = "";
|
|
|
|
|
string strNewBillNo = "";
|
|
|
|
|
|
|
|
|
|
//先获取SQL SERVER 数据库端服务器时间
|
|
|
|
|
string SQL_SELECT_GET_SERVERTIME = " SELECT GETDATE() ";
|
|
|
|
|
DateTime nowServerDateTime = (DateTime)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, SQL_SELECT_GET_SERVERTIME, null);
|
|
|
|
|
if (nowServerDateTime == DateTime.MinValue)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("未正常获取到服务端时间");
|
|
|
|
|
}
|
|
|
|
|
//获取分公司的票号头字符
|
|
|
|
|
string tempBANKSHEAD = (String)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, "SELECT TOP 1 BANKSHEAD FROM company WHERE GID='" + tempFeeSettlementEntity.CompanyID.ToString().Trim() + "'", null) as string;
|
|
|
|
|
//生成申请编号起始串
|
|
|
|
|
string strBillNoProfix = CreateBeginTitleCode(nowServerDateTime, tempBANKSHEAD+"DR", 4);
|
|
|
|
|
SqlParameter[] getLastBillParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_LIKE, SqlDbType.VarChar, 200),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_COMPANY_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
getLastBillParms[0].Value = strBillNoProfix + "%";
|
|
|
|
|
getLastBillParms[1].Value = tempFeeSettlementEntity.CompanyID;
|
|
|
|
|
//获取最大的编号
|
|
|
|
|
string SQL_SELECT_LAST_BILL_NO = " SELECT TOP 1 BILLNO FROM ch_fee_settlement WHERE BILLNO LIKE @like AND COMPANYID = @company_id ORDER BY BILLNO DESC ";
|
|
|
|
|
string tempLastBillNo = (String)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, SQL_SELECT_LAST_BILL_NO, getLastBillParms) as string;
|
|
|
|
|
strLastBillNo = tempLastBillNo ?? "";
|
|
|
|
|
//生成收费申请编号
|
|
|
|
|
strNewBillNo = CreateSettleCode(nowServerDateTime, tempBANKSHEAD+"DR", 4, strLastBillNo);
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
foreach (FeeDoEntity feeDoEntity in tempFeeDoEntities)
|
|
|
|
|
{
|
|
|
|
|
SqlParameter[] doParms = new SqlParameter[]{
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_GID, SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BILL_NO, SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BSNO, SqlDbType.VarChar,100),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_MBL_NO,SqlDbType.VarChar,30),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_HBL_NO,SqlDbType.VarChar,30),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_CUSTOMER_NAME,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BSTYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_FEE_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_FEE_NAME,SqlDbType.VarChar,100),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_CURRENCY,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_AMOUNT,SqlDbType.Decimal,40),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_DO_AMOUNT,SqlDbType.Decimal,40),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_FEE_TYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_CATEGORY,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BILL_STATUS,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_REMARK,SqlDbType.VarChar,1024),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_EXCHANGE_RATE,SqlDbType.Decimal,21),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_COMPANY_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_ORIG_AMOUNT,SqlDbType.Decimal,20)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
doParms[0].Value = feeDoEntity.GID;
|
|
|
|
|
doParms[1].Value = strNewBillNo;
|
|
|
|
|
doParms[2].Value = feeDoEntity.BSNO;
|
|
|
|
|
doParms[3].Value = feeDoEntity.MBLNO;
|
|
|
|
|
doParms[4].Value = feeDoEntity.HBLNO;
|
|
|
|
|
doParms[5].Value = feeDoEntity.CustomerName;
|
|
|
|
|
doParms[6].Value = feeDoEntity.BSType;
|
|
|
|
|
doParms[7].Value = feeDoEntity.FeeID;
|
|
|
|
|
doParms[8].Value = feeDoEntity.FeeName;
|
|
|
|
|
doParms[9].Value = feeDoEntity.Currency;
|
|
|
|
|
doParms[10].Value = feeDoEntity.OriginalFeeCSTL;
|
|
|
|
|
doParms[11].Value = feeDoEntity.DoAmount;
|
|
|
|
|
doParms[12].Value = feeDoEntity.FeeType;
|
|
|
|
|
doParms[13].Value = feeDoEntity.Category;
|
|
|
|
|
doParms[14].Value = feeDoEntity.BillStatus;
|
|
|
|
|
doParms[15].Value = feeDoEntity.Remark;
|
|
|
|
|
doParms[16].Value = feeDoEntity.ExchangeRate;
|
|
|
|
|
doParms[17].Value = feeDoEntity.CompanyID;
|
|
|
|
|
doParms[18].Value = feeDoEntity.OriginalFeeCSTL;
|
|
|
|
|
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_FEE_DO, doParms);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SqlParameter[] feeParms = new SqlParameter[]{
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_GID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter("@INVOICENUM",SqlDbType.VarChar,200)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
feeParms[0].Value = feeDoEntity.GID;
|
|
|
|
|
feeParms[1].Value = feeDoEntity.OriginalFeeCSTL;
|
|
|
|
|
if (feeDoEntity.Currency.ToString().Trim() == "RMB")
|
|
|
|
|
{
|
|
|
|
|
feeParms[2].Value = tempFeeSettlementEntity.ChequeNo;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
feeParms[2].Value = tempFeeSettlementEntity.ChequeNoUsd;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//private const string SQL_UPDATE_FEE = " UPDATE ch_fee SET ch_fee.SETTLEMENT = ch_fee.SETTLEMENT+@settlement,ch_fee.FEESTATUS = C.FEESTATUS,ch_fee.INVOICENUM = @INVOICENUM "
|
|
|
|
|
// + " FROM "
|
|
|
|
|
// + " (SELECT A.GID,CASE WHEN B.AMOUNT < A.AMOUNT THEN CASE WHEN B.AMOUNT+A.SETTLEMENT = A.AMOUNT THEN 9 ELSE 8 END ELSE "
|
|
|
|
|
// + " CASE WHEN B.AMOUNT = A.AMOUNT THEN 9 END END as FEESTATUS FROM ch_fee as A INNER JOIN ch_fee_do as B ON A.GID = B.FEEID WHERE B.GID = @gid) as C "
|
|
|
|
|
// + " WHERE C.GID = ch_fee.GID ";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_FEE, feeParms);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//更新合计利润综合信息
|
|
|
|
|
SqlParameter[] updateFeeGainParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_GAIN_STL_CR_RMB,SqlDbType.Decimal,21),
|
|
|
|
|
new SqlParameter(PARM_FEE_GAIN_STL_CR_USD,SqlDbType.Decimal,21),
|
|
|
|
|
new SqlParameter(PARM_FEE_GAIN_STL_CR_TTL,SqlDbType.Decimal,21),
|
|
|
|
|
new SqlParameter(PARM_FEE_GAIN_BSNO,SqlDbType.VarChar,100)
|
|
|
|
|
};
|
|
|
|
|
if (feeDoEntity.Currency == "RMB")
|
|
|
|
|
{
|
|
|
|
|
updateFeeGainParms[0].Value = feeDoEntity.OriginalFeeCSTL;
|
|
|
|
|
updateFeeGainParms[1].Value = 0;
|
|
|
|
|
updateFeeGainParms[2].Value = feeDoEntity.OriginalFeeCSTL;
|
|
|
|
|
updateFeeGainParms[3].Value = feeDoEntity.BSNO;
|
|
|
|
|
}
|
|
|
|
|
else if(feeDoEntity.Currency == "USD")
|
|
|
|
|
{
|
|
|
|
|
updateFeeGainParms[0].Value = 0;
|
|
|
|
|
updateFeeGainParms[1].Value = feeDoEntity.OriginalFeeCSTL;
|
|
|
|
|
updateFeeGainParms[2].Value = decimal.Parse(C1Round(double.Parse((feeDoEntity.OriginalFeeCSTL * feeDoEntity.ExchangeRate).ToString()),2).ToString());
|
|
|
|
|
updateFeeGainParms[3].Value = feeDoEntity.BSNO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_FEE_GAIN, updateFeeGainParms);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SqlParameter[] settleParms = new SqlParameter[]{
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_GID, SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_NO, SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_SETTLE_MODE, SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_CUSTOMER_NAME,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_SETTLE_TYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_AMOUNT_RMB,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_ACCOUNT_RMB,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_RATE,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_AMOUNT_USD,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_ACCOUNT_USD,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_TYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_VOUCHER_NO,SqlDbType.VarChar,50),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_SETTLE_USER,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_IS_EXPORT,SqlDbType.Bit),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_FINANCIAL_VOUCHER,SqlDbType.VarChar,50),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_STATUS,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_REMARK,SqlDbType.VarChar,1024),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_COMPANY_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
settleParms[0].Value = tempFeeSettlementEntity.GID;
|
|
|
|
|
settleParms[1].Value = strNewBillNo;
|
|
|
|
|
settleParms[2].Value = tempFeeSettlementEntity.SettleMode;
|
|
|
|
|
settleParms[3].Value = tempFeeSettlementEntity.CustomerName;
|
|
|
|
|
settleParms[4].Value = tempFeeSettlementEntity.SettleType;
|
|
|
|
|
settleParms[5].Value = tempFeeSettlementEntity.AmountRMB;
|
|
|
|
|
settleParms[6].Value = tempFeeSettlementEntity.AccountRMB;
|
|
|
|
|
settleParms[7].Value = tempFeeSettlementEntity.Rate;
|
|
|
|
|
settleParms[8].Value = tempFeeSettlementEntity.AmountUSD;
|
|
|
|
|
settleParms[9].Value = tempFeeSettlementEntity.AccountUSD;
|
|
|
|
|
settleParms[10].Value = tempFeeSettlementEntity.BillType;
|
|
|
|
|
settleParms[11].Value = tempFeeSettlementEntity.VoucherNO;
|
|
|
|
|
settleParms[12].Value = tempFeeSettlementEntity.SettleUser;
|
|
|
|
|
settleParms[13].Value = tempFeeSettlementEntity.IsExport;
|
|
|
|
|
settleParms[14].Value = tempFeeSettlementEntity.FinancialVoucher;
|
|
|
|
|
settleParms[15].Value = tempFeeSettlementEntity.BillStatus;
|
|
|
|
|
settleParms[16].Value = tempFeeSettlementEntity.Remark;
|
|
|
|
|
settleParms[17].Value = tempFeeSettlementEntity.CompanyID;
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
string SETTLETIME = tempFeeSettlementEntity.SettleTime.ToString().Trim().IndexOf("0001") > -1 ? "GETDATE()," : "'" + tempFeeSettlementEntity.SettleTime.ToString().Trim() + "',";
|
|
|
|
|
string SETTLETIME_NAME = tempFeeSettlementEntity.SettleTime.ToString().Trim().IndexOf("0001") > -1 ? "SETTLETIME," : "SETTLETIME,";
|
|
|
|
|
|
|
|
|
|
string SQL_INSERT_FEE_SETTLEMENT = String.Format("INSERT INTO ch_fee_settlement(GID, BILLNO, BILLDATE, SETTLEMODE, CUSTOMERNAME, SETTLETYPE, AMOUNTRMB, ACCOUNTRMB, RATE, AMOUNTUSD, ACCOUNTUSD, BILLTYPE, VOUCHERNO, SETTLEUSER, {0} ISEXPORT, FINANCIALVOUCHER, BILLSTATUS, REMARK,COMPANYID)"
|
|
|
|
|
+ " VALUES(@gid,@bill_no,GETDATE(),@settle_mode,@customer_name,@settle_type,@amount_rmb,@account_rmb,@rate,@amount_usd,@account_usd,@bill_type,@voucher_no,@settle_user, {1}@is_export,@financial_voucher,@bill_status,@remark,@company_id)", SETTLETIME_NAME, SETTLETIME);
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_FEE_SETTLEMENT, settleParms);
|
|
|
|
|
|
|
|
|
|
//事务提交
|
|
|
|
|
sqlTran.Commit();
|
|
|
|
|
|
|
|
|
|
iResult = 1;//状态为1表示插入成功
|
|
|
|
|
}
|
|
|
|
|
catch (Exception execError)
|
|
|
|
|
{
|
|
|
|
|
iResult = -1;//有异常,插入失败
|
|
|
|
|
sqlTran.Rollback();
|
|
|
|
|
iResult = -2;//插入异常,事务已回滚成功
|
|
|
|
|
throw execError;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
SqlHelper.CloseConnection();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return iResult;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 生成收费结算编号起始串
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 生成收费结算编号起始串
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="tempNowDateTime">当前服务器时间</param>
|
|
|
|
|
/// <param name="tempBeginTitle">结算编号起始串头字母</param>
|
|
|
|
|
/// <param name="tempCodeLength">结算编号累计编码长度</param>
|
|
|
|
|
/// <returns>返回结算编号起始串</returns>
|
|
|
|
|
private string CreateBeginTitleCode(DateTime tempNowDateTime, string tempBeginTitle, int tempCodeLength)
|
|
|
|
|
{
|
|
|
|
|
int CodeLength = tempCodeLength;
|
|
|
|
|
|
|
|
|
|
string strFeeType = tempBeginTitle;
|
|
|
|
|
//解析当前时间
|
|
|
|
|
DateTime nowDateTime = tempNowDateTime;
|
|
|
|
|
string strYear = nowDateTime.Year.ToString();
|
|
|
|
|
string strMonth = nowDateTime.Month.ToString().Length < 2 ? "0" + nowDateTime.Month.ToString() : nowDateTime.Month.ToString();
|
|
|
|
|
//获取年+月组合的字符串
|
|
|
|
|
string strDateTime = strYear + strMonth;
|
|
|
|
|
//将申请编号抬头+日期作为结算编号
|
|
|
|
|
string strCodePrefix = strFeeType + strDateTime;
|
|
|
|
|
|
|
|
|
|
return strCodePrefix;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 生成收费结算编号
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 生成收费结算编号
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="tempNowDateTime">当前服务器时间</param>
|
|
|
|
|
/// <param name="tempBeginTitle">结算编号起始串头字母</param>
|
|
|
|
|
/// <param name="tempCodeLength">结算编号累计编码长度</param>
|
|
|
|
|
/// <param name="tempLastBillNo">最大结算编号</param>
|
|
|
|
|
/// <returns>返回新的收费结算编号</returns>
|
|
|
|
|
private string CreateSettleCode(DateTime tempNowDateTime, string tempBeginTitle, int tempCodeLength, string tempLastBillNo)
|
|
|
|
|
{
|
|
|
|
|
int CodeLength = tempCodeLength;
|
|
|
|
|
string strSettleCode = "";
|
|
|
|
|
|
|
|
|
|
string strFeeType = tempBeginTitle;
|
|
|
|
|
//解析当前时间
|
|
|
|
|
DateTime nowDateTime = tempNowDateTime;
|
|
|
|
|
string strYear = nowDateTime.Year.ToString();
|
|
|
|
|
string strMonth = nowDateTime.Month.ToString().Length < 2 ? "0" + nowDateTime.Month.ToString() : nowDateTime.Month.ToString();
|
|
|
|
|
//获取年+月组合的字符串
|
|
|
|
|
string strDateTime = strYear + strMonth;
|
|
|
|
|
//将结算编号抬头+日期作为结算编号
|
|
|
|
|
string strCodePrefix = strFeeType + strDateTime;
|
|
|
|
|
|
|
|
|
|
//string strSql = "SELECT TOP 1 BILLNO FROM ch_fee_RecvApplication WHERE BILLNO LIKE '" + strFeeType + strDateTime + "%' ORDER BY BILLNO DESC";
|
|
|
|
|
//DataTable billTable = feeDoDA.GetExcuteSql(strSql).Tables[0];
|
|
|
|
|
|
|
|
|
|
ArrayList codeArg = new ArrayList();
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < CodeLength; i++)
|
|
|
|
|
{
|
|
|
|
|
codeArg.Add(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string strCode = "";//编号
|
|
|
|
|
|
|
|
|
|
if (tempLastBillNo != "")
|
|
|
|
|
{
|
|
|
|
|
string oldCode = tempLastBillNo;
|
|
|
|
|
|
|
|
|
|
if (oldCode.IndexOf(strCodePrefix) >= 0)
|
|
|
|
|
{
|
|
|
|
|
oldCode = oldCode.Substring(strCodePrefix.Length, oldCode.Length - strCodePrefix.Length);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (oldCode.Length == CodeLength)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < oldCode.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (oldCode[i].ToString().IndexOf("0") == 0)
|
|
|
|
|
{
|
|
|
|
|
oldCode = oldCode.Remove(i, 1);
|
|
|
|
|
i = -1;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int newNum = int.Parse(oldCode);
|
|
|
|
|
|
|
|
|
|
newNum = newNum + 1;
|
|
|
|
|
|
|
|
|
|
string strNewNum = newNum.ToString();
|
|
|
|
|
|
|
|
|
|
int codeArgCount = codeArg.Count - 1;
|
|
|
|
|
for (int i = strNewNum.Length - 1; i >= 0; i--)
|
|
|
|
|
{
|
|
|
|
|
codeArg[codeArgCount] = strNewNum[i];
|
|
|
|
|
codeArgCount--;
|
|
|
|
|
}
|
|
|
|
|
//for (int i = 0; i < strNewNum.Length; i++)
|
|
|
|
|
//{
|
|
|
|
|
// codeArg[i] = strNewNum[i];
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
int iOld = int.Parse(codeArg[codeArg.Count - 1].ToString());
|
|
|
|
|
codeArg[codeArg.Count - 1] = (iOld + 1).ToString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < codeArg.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
strCode += codeArg[i].ToString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
strSettleCode = strFeeType + strDateTime + strCode;
|
|
|
|
|
return strSettleCode;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 金额四舍五入
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 金额四舍五入
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="value">金额值</param>
|
|
|
|
|
/// <param name="digit">小数点后位数</param>
|
|
|
|
|
/// <returns>返回Double型四舍五入金额</returns>
|
|
|
|
|
public double C1Round(double value, int digit)
|
|
|
|
|
{
|
|
|
|
|
double vt = Math.Pow(10, digit);
|
|
|
|
|
double vx = value * vt;
|
|
|
|
|
|
|
|
|
|
vx += 0.5;
|
|
|
|
|
return (Math.Floor(vx) / vt);
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 通过SQL语句获取数据
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 通过SQL语句获取数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="strSql">要执行查询的SQL语句</param>
|
|
|
|
|
/// <returns>返回DataSet数据</returns>
|
|
|
|
|
public DataSet GetDataSetBySql(string strSql)
|
|
|
|
|
{
|
|
|
|
|
DataSet dataSet = new DataSet();
|
|
|
|
|
|
|
|
|
|
dataSet = SqlHelper.ExecuteDataset(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, strSql);
|
|
|
|
|
return dataSet;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 通过惟一主键获取收费结算信息
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 通过惟一主键获取收费结算信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="tempFeeSettlementID">费用结算GID</param>
|
|
|
|
|
/// <returns>返回实体类FeeSettlementEntity</returns>
|
|
|
|
|
public FeeSettlementEntity GetFeeSettlementByGID(string tempFeeSettlementID)
|
|
|
|
|
{
|
|
|
|
|
SqlParameter parm = new SqlParameter(PARM_FEE_SETTLEMENT_GID, SqlDbType.VarChar, 36);
|
|
|
|
|
parm.Value = tempFeeSettlementID;
|
|
|
|
|
|
|
|
|
|
FeeSettlementEntity feeSettlementEntity = null;
|
|
|
|
|
using (SqlDataReader sqlRead = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_FEE_SETTLEMENT_BY_GID, parm))
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
while (sqlRead.Read())
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity = new FeeSettlementEntity();
|
|
|
|
|
if (!sqlRead.IsDBNull(0))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.GID = sqlRead.GetString(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(1))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.BillNO = sqlRead.GetString(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(2))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.BillDate = sqlRead.GetDateTime(2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(3))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.SettleMode = sqlRead.GetInt32(3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(4))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.CustomerName = sqlRead.GetString(4);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(5))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.SettleType = sqlRead.GetInt32(5);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(6))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.AmountRMB = sqlRead.GetDecimal(6);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(7))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.AccountRMB = sqlRead.GetString(7);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(8))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.Rate = sqlRead.GetDecimal(8);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(9))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.AmountUSD = sqlRead.GetDecimal(9);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(10))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.AccountUSD = sqlRead.GetString(10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(11))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.BillType = sqlRead.GetInt32(11);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(12))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.VoucherNO = sqlRead.GetString(12);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(13))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.SettleUser = sqlRead.GetString(13);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(14))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.SettleTime = sqlRead.GetDateTime(14);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(15))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.AuditUser = sqlRead.GetString(15);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(16))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.AuditTime = sqlRead.GetDateTime(16);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(17))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.IsExport = sqlRead.GetBoolean(17);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(18))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.FinancialVoucher = sqlRead.GetString(18);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(19))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.BillStatus = sqlRead.GetInt32(19);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!sqlRead.IsDBNull(20))
|
|
|
|
|
{
|
|
|
|
|
feeSettlementEntity.Remark = sqlRead.GetString(20);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception execError)
|
|
|
|
|
{
|
|
|
|
|
throw execError;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return feeSettlementEntity;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
public string GetBillNoByPaySettleID(string tempPaySettleID)
|
|
|
|
|
{
|
|
|
|
|
string result = "";
|
|
|
|
|
|
|
|
|
|
using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
SqlParameter parm = new SqlParameter(PARM_FEE_SETTLEMENT_GID, SqlDbType.VarChar, 36);
|
|
|
|
|
parm.Value = tempPaySettleID;
|
|
|
|
|
|
|
|
|
|
result = (String)SqlHelper.ExecuteScalar(conn, CommandType.Text, SQL_SELECT_CH_FEE_PAY_APPLICATION_BILLNO, parm) as String ?? "";
|
|
|
|
|
}
|
|
|
|
|
catch (Exception error)
|
|
|
|
|
{
|
|
|
|
|
throw error;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 将已保存的未结算的收费进行结算
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 将已保存的未结算的收费进行结算
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="tempFeeSettleID">收费结算GID</param>
|
|
|
|
|
/// <param name="tempRunSettleID">运行结算GID</param>
|
|
|
|
|
/// <param name="tempOperator">操作人GID</param>
|
|
|
|
|
/// <param name="tempRemark">备注</param>
|
|
|
|
|
/// <param name="tempCompanyID">分公司GID</param>
|
|
|
|
|
/// <returns>值1表示结算成功 值不等于1表示结算失败</returns>
|
|
|
|
|
public int PostSavePaySettle(string tempFeeSettleID, string tempRunSettleID, string tempOperator, string tempRemark, string tempCompanyID)
|
|
|
|
|
{
|
|
|
|
|
int iResult = 0;
|
|
|
|
|
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string strLastBillNo = "";
|
|
|
|
|
string strNewBillNo = "";
|
|
|
|
|
//先校验费用申请金额是否满足申请要求
|
|
|
|
|
int validState = 0;
|
|
|
|
|
//先校验是否费用已经做了申请
|
|
|
|
|
SqlParameter[] validFeeParms = new SqlParameter[]{
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_SETTLEMENT_GID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
validFeeParms[0].Value = tempRunSettleID;
|
|
|
|
|
validState = (int)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, SQL_VALID_CH_FEE_SETTLEMENT_BY_RUNFEEDO, validFeeParms);
|
|
|
|
|
|
|
|
|
|
if (validState == 0)
|
|
|
|
|
{
|
|
|
|
|
//先获取SQL SERVER 数据库端服务器时间
|
|
|
|
|
string SQL_SELECT_GET_SERVERTIME = " SELECT GETDATE() ";
|
|
|
|
|
DateTime nowServerDateTime = (DateTime)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, SQL_SELECT_GET_SERVERTIME, null);
|
|
|
|
|
|
|
|
|
|
if (nowServerDateTime == DateTime.MinValue)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("未正常获取到服务端时间");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取分公司的票号头字符
|
|
|
|
|
string tempBANKSHEAD = (String)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, "SELECT TOP 1 BANKSHEAD FROM company WHERE GID='" + tempCompanyID.Trim() + "'", null) as string;
|
|
|
|
|
|
|
|
|
|
//生成申请编号起始串
|
|
|
|
|
string strBillNoProfix = CreateBeginTitleCode(nowServerDateTime, tempBANKSHEAD+"DR", 4);
|
|
|
|
|
|
|
|
|
|
SqlParameter[] getLastBillParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_LIKE, SqlDbType.VarChar, 200),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_COMPANY_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
getLastBillParms[0].Value = strBillNoProfix + "%";
|
|
|
|
|
getLastBillParms[1].Value = tempCompanyID;
|
|
|
|
|
|
|
|
|
|
//获取最大的编号
|
|
|
|
|
string SQL_SELECT_LAST_BILL_NO = " SELECT TOP 1 BILLNO FROM ch_fee_settlement WHERE BILLNO LIKE @like AND COMPANYID = @company_id ORDER BY BILLNO DESC ";
|
|
|
|
|
string tempLastBillNo = (String)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, SQL_SELECT_LAST_BILL_NO, getLastBillParms) as string;
|
|
|
|
|
strLastBillNo = tempLastBillNo ?? "";
|
|
|
|
|
//生成收费申请编号
|
|
|
|
|
strNewBillNo = CreateSettleCode(nowServerDateTime, tempBANKSHEAD+"DR", 4, strLastBillNo);
|
|
|
|
|
|
|
|
|
|
SqlParameter[] insertSettleParms = new SqlParameter[]{
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_SETTLEMENT_PAYSETTLE_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_SETTLEMENT_GID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_SETTLEMENT_BILL_NO,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_SETTLEMENT_SETTLE_USER,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_SETTLEMENT_REMARK,SqlDbType.VarChar,1024),
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_SETTLEMENT_COMPANY_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
insertSettleParms[0].Value = tempFeeSettleID;
|
|
|
|
|
insertSettleParms[1].Value = tempRunSettleID;
|
|
|
|
|
insertSettleParms[2].Value = strNewBillNo;
|
|
|
|
|
insertSettleParms[3].Value = tempOperator;
|
|
|
|
|
insertSettleParms[4].Value = tempRemark;
|
|
|
|
|
insertSettleParms[5].Value = tempCompanyID;
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_CH_FEE_SETTLEMENT_RUN, insertSettleParms);
|
|
|
|
|
//
|
|
|
|
|
SqlParameter[] insertFeeDoParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_DO_BILL_NO,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_DO_RUN_SETTLE_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
insertFeeDoParms[0].Value = strNewBillNo;
|
|
|
|
|
insertFeeDoParms[1].Value = tempRunSettleID;
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_CH_FEE_FEE_DO_RUN, insertFeeDoParms);
|
|
|
|
|
//
|
|
|
|
|
//将运行结算主表中的RMB发票号插入到ch_fee
|
|
|
|
|
string SQL_UPDATE_CH_FEE_BY_RUN_FEE_SETTLEMENT_RMB = " update ch_fee set INVOICENUM=(select top 1 CHEQUENO from run_fee_settlement where gid=@runsettle_id) where gid in (SELECT feeid FROM run_fee_do WHERE RUNSETTLEID = @runsettle_id and CURRENCY='RMB') and CURRENCY='RMB'";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_BY_RUN_FEE_SETTLEMENT_RMB, insertFeeDoParms);
|
|
|
|
|
//
|
|
|
|
|
//将运行结算主表中的USD发票号插入到ch_fee
|
|
|
|
|
string SQL_UPDATE_CH_FEE_BY_RUN_FEE_SETTLEMENT_USD = " update ch_fee set INVOICENUM=(select top 1 CHEQUENOUSD from run_fee_settlement where gid=@runsettle_id) where gid in (SELECT feeid FROM run_fee_do WHERE RUNSETTLEID = @runsettle_id and CURRENCY='USD') and CURRENCY='USD'";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_BY_RUN_FEE_SETTLEMENT_USD, insertFeeDoParms);
|
|
|
|
|
//
|
|
|
|
|
SqlParameter[] updateFeeParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BILL_NO,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_COMPANY_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
updateFeeParms[0].Value = strNewBillNo;
|
|
|
|
|
updateFeeParms[1].Value = tempCompanyID;
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_BY_RUN_FEE_DO, updateFeeParms);
|
|
|
|
|
//
|
|
|
|
|
SqlParameter[] deleteRunSettleParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_SETTLEMENT_GID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
deleteRunSettleParms[0].Value = tempRunSettleID;
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_DELETE_RUN_FEE_SETTLEMENT_BY_GID, deleteRunSettleParms);
|
|
|
|
|
//
|
|
|
|
|
SqlParameter[] deleteRunDoParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_RUN_FEE_DO_RUN_SETTLE_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
deleteRunDoParms[0].Value = tempRunSettleID;
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_DELETE_RUN_FEE_DO_BY_RUNSETTLE_ID, deleteRunDoParms);
|
|
|
|
|
}
|
|
|
|
|
//事务提交
|
|
|
|
|
sqlTran.Commit();
|
|
|
|
|
|
|
|
|
|
if (validState == 0)
|
|
|
|
|
{
|
|
|
|
|
iResult = 1;//状态为1表示插入成功
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
iResult = -3;//费用表没有足够的申请金额使用,无法提交收费申请
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception execError)
|
|
|
|
|
{
|
|
|
|
|
iResult = -1;//有异常,插入失败
|
|
|
|
|
sqlTran.Rollback();
|
|
|
|
|
iResult = -2;//插入异常,事务已回滚成功
|
|
|
|
|
throw execError;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
SqlHelper.CloseConnection();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return iResult;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 撤销收费结算
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 撤销收费结算
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="tempPaySettleID">收费结算GID</param>
|
|
|
|
|
/// <param name="tempPaySettleID">收费结算单号</param>
|
|
|
|
|
/// <param name="tempOperator">操作人GID</param>
|
|
|
|
|
/// <param name="tempCompanyID">分公司GID</param>
|
|
|
|
|
/// <returns>值1表示撤销结算成功 值不等于1表示撤销结算失败</returns>
|
|
|
|
|
public int CacelPaySettle(string tempPaySettleID,string tempBillNO,string tempOperator,string tempCompanyID)
|
|
|
|
|
{
|
|
|
|
|
int iResult = 0;
|
|
|
|
|
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
int iSourceState = 0;
|
|
|
|
|
string sSourceState2 = "";
|
|
|
|
|
//再判断当前结算信息是否来自收费申请
|
|
|
|
|
SqlParameter[] isRecvAppParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_SETTLE_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
isRecvAppParms[0].Value = tempPaySettleID;
|
|
|
|
|
|
|
|
|
|
//获取收费结算来源
|
|
|
|
|
//string SQL_VALID_PAY_SETTLE_SOURCE = " SELECT COUNT(*) FROM ch_fee_settle_link WHERE SETTLEID = @settle_id ";
|
|
|
|
|
iSourceState = (int)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, SQL_VALID_PAY_SETTLE_SOURCE, isRecvAppParms);
|
|
|
|
|
|
|
|
|
|
//iSourceState为0表示收费结算是直接结算 iSourceState大于0表示收费结算是通过收费申请结算
|
|
|
|
|
if (iSourceState > 0)
|
|
|
|
|
{
|
|
|
|
|
string sSQL = "SELECT COUNT(*) FROM ch_fee_settle_link WHERE RELATIONSUBID=(select top 1 RELATIONSUBID from ch_fee_settle_link where SETTLEID = '" + tempPaySettleID + "')";
|
|
|
|
|
iSourceState = (int)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
string sCURRENCY = "RMB";
|
|
|
|
|
sSQL = "SELECT (case when isnull(AMOUNTRMB,0)<>0 then 'RMB' else (case when isnull(AMOUNTUSD,0)<>0 then 'USD' else 'RMB' end) end) as CURRENCY from ch_fee_RecvApplication where GID=(select top 1 RELATIONSUBID from ch_fee_settle_link where SETTLEID = '" + tempPaySettleID + "') and (ISDELETE is null or ISDELETE=0) ";
|
|
|
|
|
object statusObj = SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
if (statusObj != null)
|
|
|
|
|
{
|
|
|
|
|
sCURRENCY = statusObj.ToString().Trim();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
if (sCURRENCY == "RMB")
|
|
|
|
|
{
|
|
|
|
|
sSQL = "SELECT (case when isnull(AMOUNTRMB,0)=(case when isnull((select sum(DOAMOUNT) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='RMB' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0)=0 then isnull((select CAST(sum(DOAMOUNT*EXCHANGERATE) as decimal(20,2)) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='USD' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0) else isnull((select sum(DOAMOUNT) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='RMB' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0) end) then '全部结算' else '部分结算' end) as zt from ch_fee_RecvApplication where GID=(select top 1 RELATIONSUBID from ch_fee_settle_link where SETTLEID = '" + tempPaySettleID + "') and (ISDELETE is null or ISDELETE=0) ";
|
|
|
|
|
statusObj = SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
if (statusObj == null)
|
|
|
|
|
{
|
|
|
|
|
sSourceState2 = "全部结算";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sSourceState2 = statusObj.ToString().Trim();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sSQL = "SELECT (case when isnull(AMOUNTUSD,0)=(case when isnull((select CAST(sum(DOAMOUNT*EXCHANGERATE) as decimal(20,2)) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='RMB' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0)=0 then isnull((select sum(DOAMOUNT) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='USD' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0) else isnull((select CAST(sum(DOAMOUNT*EXCHANGERATE) as decimal(20,2)) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='RMB' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0) end) then '全部结算' else '部分结算' end) as zt from ch_fee_RecvApplication where GID=(select top 1 RELATIONSUBID from ch_fee_settle_link where SETTLEID = '" + tempPaySettleID + "') and (ISDELETE is null or ISDELETE=0) ";
|
|
|
|
|
statusObj = SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
if (statusObj == null)
|
|
|
|
|
{
|
|
|
|
|
sSourceState2 = "全部结算";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sSourceState2 = statusObj.ToString().Trim();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//说明是部分结算
|
|
|
|
|
if (iSourceState > 0 && sSourceState2 == "部分结算")
|
|
|
|
|
{
|
|
|
|
|
//更新ch_fee_RecvApplication的部分结算金额(撤销结算)
|
|
|
|
|
if (sCURRENCY == "RMB")
|
|
|
|
|
{
|
|
|
|
|
sSQL = " UPDATE ch_fee_RecvApplication SET "
|
|
|
|
|
+ " SETTLERMB=SETTLERMB-(case when isnull((select sum(DOAMOUNT) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='RMB' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0)<>0 then isnull((select sum(DOAMOUNT) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='RMB' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0) else (case when isnull((select CAST(sum(DOAMOUNT*EXCHANGERATE) as decimal(20, 2)) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='USD' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0)<>0 then isnull((select CAST(sum(DOAMOUNT*EXCHANGERATE) as decimal(20, 2)) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='USD' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0) else SETTLERMB end) end) "
|
|
|
|
|
+ " FROM ch_fee_settle_link WHERE ch_fee_settle_link.RELATIONSUBID = ch_fee_RecvApplication.GID AND SETTLEID = '" + tempPaySettleID + "' and (ch_fee_RecvApplication.ISDELETE is null or ch_fee_RecvApplication.ISDELETE=0) ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sSQL = " UPDATE ch_fee_RecvApplication SET "
|
|
|
|
|
+ " SETTLEUSD=SETTLEUSD-(case when isnull((select CAST(sum(DOAMOUNT*EXCHANGERATE) as decimal(20, 2)) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='RMB' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0)<>0 then isnull((select CAST(sum(DOAMOUNT*EXCHANGERATE) as decimal(20, 2)) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='RMB' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0) else (case when isnull((select sum(DOAMOUNT) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='USD' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0)<>0 then isnull((select sum(DOAMOUNT) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and CURRENCY='USD' and feename<>'汇率损益' and (ISDELETED is null or ISDELETED=0)),0) else SETTLEUSD end) end) "
|
|
|
|
|
+ " FROM ch_fee_settle_link WHERE ch_fee_settle_link.RELATIONSUBID = ch_fee_RecvApplication.GID AND SETTLEID = '" + tempPaySettleID + "' and (ch_fee_RecvApplication.ISDELETE is null or ch_fee_RecvApplication.ISDELETE=0) ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//更新收费申请状态从已经结算更新为已审核(撤销结算)
|
|
|
|
|
string SQL_UPDATE_CH_FEE_PAY_APP_FOR_CANCEL = " UPDATE ch_fee_RecvApplication SET "
|
|
|
|
|
+ "BILLSTATUS=(case when isnull(AMOUNTRMB,0)<>0 then (case when isnull(AMOUNTRMB,0)=isnull(SETTLERMB,0) then 4 else (case when isnull(SETTLERMB,0)=0 then 0 else 5 end) end) else (case when isnull(AMOUNTUSD,0)<>0 then (case when isnull(AMOUNTUSD,0)=isnull(SETTLEUSD,0) then 4 else (case when isnull(SETTLEUSD,0)=0 then 0 else 5 end) end)else 0 end) end)"
|
|
|
|
|
+ " from ch_fee_RecvApplication where GID=(select top 1 RELATIONSUBID from ch_fee_settle_link where SETTLEID = '" + tempPaySettleID + "') and (ISDELETE is null or ISDELETE=0) ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_PAY_APP_FOR_CANCEL, null);
|
|
|
|
|
|
|
|
|
|
//更新ch_fee_do的结算金额-部分结算金额(撤销结算)
|
|
|
|
|
sSQL = " update ch_fee_do set "
|
|
|
|
|
+ " DOAMOUNT=(case when DOAMOUNT-(select DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and feeid=D.feeid and (ISDELETED is null or ISDELETED=0))>0 then DOAMOUNT-(select DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and feeid=D.feeid and (ISDELETED is null or ISDELETED=0)) else isnull(AMOUNT,0) end) "
|
|
|
|
|
+ " from ch_fee_do as D where D.billno=(select top 1 billno from ch_fee_RecvApplication where GID=(select top 1 RELATIONSUBID from ch_fee_settle_link where SETTLEID = '" + tempPaySettleID + "') and (ISDELETE is null or ISDELETE=0)) and (D.ISDELETED is null or D.ISDELETED=0)";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
|
|
|
|
|
//更新ch_fee的结算金额-部分结算金额(撤销结算)
|
|
|
|
|
sSQL = " update ch_fee set "
|
|
|
|
|
+ " SETTLEMENT=SETTLEMENT-(select (case when AMOUNT-DOAMOUNT=0 then AMOUNT else DOAMOUNT end) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and feeid=D.GID and (ISDELETED is null or ISDELETED=0)) "
|
|
|
|
|
+ ",FEESTATUS=(case when SETTLEMENT-(select (case when AMOUNT-DOAMOUNT=0 then AMOUNT else DOAMOUNT end) as DOAMOUNT from ch_fee_do where billno = '" + tempBillNO + "' and feeid=D.GID and (ISDELETED is null or ISDELETED=0))=0 then 0 else 8 end) "
|
|
|
|
|
+ "from ch_fee as D where D.GID in (select feeid from ch_fee_do where billno = '" + tempBillNO + "' and (ISDELETED is null or ISDELETED=0))";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
|
|
|
|
|
//更新收费申请费用明细状态未结算
|
|
|
|
|
SqlParameter[] updateFeeDoStateParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_PAY_APP_GID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
updateFeeDoStateParms[0].Value = tempPaySettleID;
|
|
|
|
|
|
|
|
|
|
//更新收费申请相关的费用状态为激活状态(撤销结算)
|
|
|
|
|
//string SQL_UPDATE_CH_FEE_DO_APP_FOR_CANCEL = " UPDATE ch_fee_do SET ISDELETED = 0 FROM ch_fee_RecvApplication WHERE ch_fee_RecvApplication.BILLNO = ch_fee_do.BILLNO AND ch_fee_RecvApplication.COMPANYID = ch_fee_do.COMPANYID AND ch_fee_RecvApplication.GID = @gid ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_DO_APP_FOR_CANCEL, updateFeeDoStateParms);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//更新收费申请状态从已经结算更新为已审核(撤销结算)
|
|
|
|
|
string SQL_UPDATE_CH_FEE_PAY_APP_FOR_CANCEL = " UPDATE ch_fee_RecvApplication SET BILLSTATUS=0,SETTLERMB=0,SETTLEUSD=0 FROM ch_fee_settle_link WHERE ch_fee_settle_link.RELATIONSUBID = ch_fee_RecvApplication.GID AND SETTLEID = '" + tempPaySettleID + "' and (ch_fee_RecvApplication.ISDELETE is null or ch_fee_RecvApplication.ISDELETE=0) ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_PAY_APP_FOR_CANCEL, null);
|
|
|
|
|
|
|
|
|
|
//更新ch_fee_do的结算金额-部分结算金额(撤销结算)
|
|
|
|
|
sSQL = " update ch_fee_do set "
|
|
|
|
|
+ " DOAMOUNT=AMOUNT "
|
|
|
|
|
+ "from ch_fee_do as D where D.billno=(select top 1 billno from ch_fee_RecvApplication where (ISDELETE is null or ISDELETE=0) and GID=(select top 1 RELATIONSUBID from ch_fee_settle_link where SETTLEID = '" + tempPaySettleID + "')) and (D.ISDELETED is null or D.ISDELETED=0)";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
|
|
|
|
|
//更新收费申请费用明细状态未结算
|
|
|
|
|
SqlParameter[] updateFeeDoStateParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_PAY_APP_GID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
updateFeeDoStateParms[0].Value = tempPaySettleID;
|
|
|
|
|
|
|
|
|
|
//更新收费申请相关的费用状态为激活状态(撤销结算)
|
|
|
|
|
//string SQL_UPDATE_CH_FEE_DO_APP_FOR_CANCEL = " UPDATE ch_fee_do SET ISDELETED = 0 FROM ch_fee_RecvApplication WHERE ch_fee_RecvApplication.BILLNO = ch_fee_do.BILLNO AND ch_fee_RecvApplication.COMPANYID = ch_fee_do.COMPANYID AND ch_fee_RecvApplication.GID = @gid ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_DO_APP_FOR_CANCEL, updateFeeDoStateParms);
|
|
|
|
|
|
|
|
|
|
//先将费用表的结算信息更新到结算前状态
|
|
|
|
|
SqlParameter[] updateFeeParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BILL_NO,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_COMPANY_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
updateFeeParms[0].Value = tempBillNO;
|
|
|
|
|
updateFeeParms[1].Value = tempCompanyID;
|
|
|
|
|
|
|
|
|
|
//还原已经进行收费结算的费用(撤销收费结算)
|
|
|
|
|
//string SQL_UPDATE_CH_FEE_FOR_CANCELPAYSETTLE = " UPDATE ch_fee SET ch_fee.FEESTATUS = (CASE WHEN ch_fee_do.ORIGAMOUNT = ch_fee.SETTLEMENT THEN 0 ELSE 8 END), "
|
|
|
|
|
//+ " ch_fee.SETTLEMENT = ISNULL(ch_fee.SETTLEMENT,0) - ch_fee_do.ORIGAMOUNT "
|
|
|
|
|
//+ " FROM ch_fee_do WHERE ch_fee.GID = ch_fee_do.FEEID AND ch_fee_do.BILLNO = @bill_no AND COMPANYID = @company_id ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_FOR_CANCELPAYSETTLE, updateFeeParms);
|
|
|
|
|
}
|
|
|
|
|
//更新ch_fee的结算金额-部分结算金额(撤销结算)
|
|
|
|
|
sSQL = " delete from ch_fee where GID in (select feeid from ch_fee_do where billno = '" + tempBillNO + "' and (ISDELETED is null or ISDELETED=0)) and feename='汇率损益'";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//先将费用表的结算信息更新到结算前状态
|
|
|
|
|
SqlParameter[] updateFeeParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BILL_NO,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_COMPANY_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
updateFeeParms[0].Value = tempBillNO;
|
|
|
|
|
updateFeeParms[1].Value = tempCompanyID;
|
|
|
|
|
|
|
|
|
|
//还原已经进行收费结算的费用(撤销收费结算)
|
|
|
|
|
//string SQL_UPDATE_CH_FEE_FOR_CANCELPAYSETTLE = " UPDATE ch_fee SET ch_fee.FEESTATUS = (CASE WHEN ch_fee_do.ORIGAMOUNT = ch_fee.SETTLEMENT THEN 0 ELSE 8 END), "
|
|
|
|
|
//+ " ch_fee.SETTLEMENT = ISNULL(ch_fee.SETTLEMENT,0) - ch_fee_do.ORIGAMOUNT "
|
|
|
|
|
//+ " FROM ch_fee_do WHERE ch_fee.GID = ch_fee_do.FEEID AND ch_fee_do.BILLNO = @bill_no AND COMPANYID = @company_id ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_FOR_CANCELPAYSETTLE, updateFeeParms);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//删除FeeDo记录
|
|
|
|
|
SqlParameter[] deleteFeeDoParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BILL_NO,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_COMPANY_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_DELETE_USER,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
deleteFeeDoParms[0].Value = tempBillNO;
|
|
|
|
|
deleteFeeDoParms[1].Value = tempCompanyID;
|
|
|
|
|
deleteFeeDoParms[2].Value = tempOperator;
|
|
|
|
|
|
|
|
|
|
//删除收费结算费用明细表(撤销收费结算)
|
|
|
|
|
//string SQL_DELETE_CH_FEE_DO = " UPDATE ch_fee_do SET ISDELETED = 1,DELETEUSER = @delete_user,DELETETIME = GETDATE() WHERE BILLNO = @bill_no AND COMPANYID = @company_id ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_DELETE_CH_FEE_DO, deleteFeeDoParms);
|
|
|
|
|
|
|
|
|
|
//更新主表,更新要删除的预收预收明细表中的预收支取用资料
|
|
|
|
|
string ssql = "update [ch_fee_advance_payment] set DOAMOUNT=DOAMOUNT-(select sum(DOAMOUNT) from ch_fee_advance_payment_detail where SETTLEBILLNO='" + tempBillNO + "' and LINKGID=ch_fee_advance_payment.GID and (ISDELETE=0 or ISDELETE is null)),ISFINISH=0 where GID in (select LINKGID from ch_fee_advance_payment_detail where SETTLEBILLNO='" + tempBillNO + "' and (ISDELETE=0 or ISDELETE is null))";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, ssql, null);
|
|
|
|
|
//删除预收预收明细表中的预收支取用资料
|
|
|
|
|
ssql = "delete from ch_fee_advance_payment_detail where SETTLEBILLNO='" + tempBillNO + "'";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, ssql, null);
|
|
|
|
|
//删除预收预收主表中的预收支资料
|
|
|
|
|
ssql = "delete from ch_fee_advance_payment where BILLNO='" + tempBillNO + "'";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, ssql, null);
|
|
|
|
|
|
|
|
|
|
//删除FeeSettlement记录
|
|
|
|
|
SqlParameter[] deletePaySettleParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_NO,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_COMPANY_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_DELETE_USER,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
deletePaySettleParms[0].Value = tempBillNO;
|
|
|
|
|
deletePaySettleParms[1].Value = tempCompanyID;
|
|
|
|
|
deletePaySettleParms[2].Value = tempOperator;
|
|
|
|
|
//删除收费结算表(撤销收费结算)
|
|
|
|
|
//string SQL_DELETE_CH_FEE_SETTLEMENT = " UPDATE ch_fee_settlement SET ISDELETE = 1,DELETEUSER = @delete_user,DELETETIME = GETDATE() WHERE BILLNO = @bill_no AND COMPANYID = @company_id ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_DELETE_CH_FEE_SETTLEMENT, deletePaySettleParms);
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
SqlParameter[] deleteLinkParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_SETTLE_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
deleteLinkParms[0].Value = tempPaySettleID;
|
|
|
|
|
|
|
|
|
|
//删除合并结算关联信息表记录
|
|
|
|
|
//string SQL_DELETE_CH_FEE_SETTLE_LINK = " DELETE FROM ch_fee_settle_link WHERE SETTLEID = @settle_id ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_DELETE_CH_FEE_SETTLE_LINK, deleteLinkParms);
|
|
|
|
|
|
|
|
|
|
//事务提交
|
|
|
|
|
sqlTran.Commit();
|
|
|
|
|
|
|
|
|
|
iResult = 1;//状态为1表示插入成功
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception execError)
|
|
|
|
|
{
|
|
|
|
|
iResult = -1;//有异常,插入失败
|
|
|
|
|
sqlTran.Rollback();
|
|
|
|
|
iResult = -2;//插入异常,事务已回滚成功
|
|
|
|
|
throw execError;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
SqlHelper.CloseConnection();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return iResult;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 提交收费申请结算
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 提交收费申请结算
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="tempFeeRecvAppEntities"></param>
|
|
|
|
|
/// <param name="tempFeeSettlementEntity"></param>
|
|
|
|
|
/// <param name="tempCompanyID"></param>
|
|
|
|
|
/// <param name="tempOperator"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public int MergeRecvApplicationSettle(IList<ChFeeRecvApplicationEntity> tempFeeRecvAppEntities, FeeSettlementEntity tempFeeSettlementEntity, string tempCompanyID, string tempOperator)
|
|
|
|
|
{
|
|
|
|
|
int iResult = 0;
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string strLastBillNo = "";
|
|
|
|
|
string strNewBillNo = "";
|
|
|
|
|
//先校验费用申请金额是否满足申请要求
|
|
|
|
|
int validState = 0;
|
|
|
|
|
for (int i = 0; i < tempFeeRecvAppEntities.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
//建立收费结算关联信息(生成收费结算和收费申请关联关系)
|
|
|
|
|
SqlParameter[] insertSettleLinkParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_SETTLE_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_TYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_RELATION_SUB_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_CREATE_USER,SqlDbType.VarChar,36),
|
|
|
|
|
};
|
|
|
|
|
insertSettleLinkParms[0].Value = tempFeeSettlementEntity.GID;
|
|
|
|
|
insertSettleLinkParms[1].Value = 1;
|
|
|
|
|
insertSettleLinkParms[2].Value = tempFeeRecvAppEntities[i].GID;
|
|
|
|
|
insertSettleLinkParms[3].Value = tempOperator;
|
|
|
|
|
string SQL_INSERT_CH_FEE_SETTLE_LINK = "INSERT INTO ch_fee_settle_link(GID,TYPE,SETTLEID,RELATIONSUBID,CREATEUSER,CREATETIME) "
|
|
|
|
|
+ " VALUES(newid(),@type,@settle_id,@relation_sub_id,@create_user,GETDATE()) ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_CH_FEE_SETTLE_LINK, insertSettleLinkParms);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//校验费用是否满足收费结算金额
|
|
|
|
|
SqlParameter[] validParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_SETTLE_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
validParms[0].Value = tempFeeSettlementEntity.GID;
|
|
|
|
|
string SQL_VALID_CH_FEE_SETTLEMENT_FOR_MERGE = " SELECT COUNT(A.GID)-SUM(CASE WHEN C.AMOUNT = C.SETTLEMENT THEN -1 ELSE CASE WHEN (C.AMOUNT - C.SETTLEMENT) < A.ORIGAMOUNT THEN -1 ELSE "
|
|
|
|
|
+ " CASE WHEN (C.AMOUNT - C.SETTLEMENT) >= A.ORIGAMOUNT THEN 1 END END END) FROM ch_fee_do as A INNER JOIN ch_fee_RecvApplication as B "
|
|
|
|
|
+ " ON A.BILLNO = B.BILLNO AND A.COMPANYID = B.COMPANYID INNER JOIN ch_fee as C ON A.FEEID = C.GID INNER JOIN ch_fee_settle_link as D ON B.GID = D.RELATIONSUBID WHERE D.SETTLEID = @settle_id ";
|
|
|
|
|
validState = (int)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, SQL_VALID_CH_FEE_SETTLEMENT_FOR_MERGE, validParms);
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
if (validState == 0)
|
|
|
|
|
{
|
|
|
|
|
//先获取SQL SERVER 数据库端服务器时间
|
|
|
|
|
string SQL_SELECT_GET_SERVERTIME = " SELECT GETDATE() ";
|
|
|
|
|
DateTime nowServerDateTime = (DateTime)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, SQL_SELECT_GET_SERVERTIME, null);
|
|
|
|
|
if (nowServerDateTime == DateTime.MinValue)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("未正常获取到服务端时间");
|
|
|
|
|
}
|
|
|
|
|
//获取分公司的票号头字符
|
|
|
|
|
string tempBANKSHEAD = (String)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, "SELECT TOP 1 BANKSHEAD FROM company WHERE GID='" + tempCompanyID.Trim() + "'", null) as string;
|
|
|
|
|
//生成申请编号起始串
|
|
|
|
|
string strBillNoProfix = CreateBeginTitleCode(nowServerDateTime, tempBANKSHEAD+"DR", 4);
|
|
|
|
|
//
|
|
|
|
|
SqlParameter[] getLastBillParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_LIKE, SqlDbType.VarChar, 200),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_COMPANY_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
getLastBillParms[0].Value = strBillNoProfix + "%";
|
|
|
|
|
getLastBillParms[1].Value = tempCompanyID;
|
|
|
|
|
//获取最大的编号
|
|
|
|
|
string SQL_SELECT_LAST_BILL_NO = " SELECT TOP 1 BILLNO FROM ch_fee_settlement WHERE BILLNO LIKE @like AND COMPANYID = @company_id ORDER BY BILLNO DESC ";
|
|
|
|
|
string tempLastBillNo = (String)SqlHelper.ExecuteScalar(sqlTran, CommandType.Text, SQL_SELECT_LAST_BILL_NO, getLastBillParms) as string;
|
|
|
|
|
strLastBillNo = tempLastBillNo ?? "";
|
|
|
|
|
//生成收费申请编号
|
|
|
|
|
strNewBillNo = CreateSettleCode(nowServerDateTime, tempBANKSHEAD+"DR", 4, strLastBillNo);
|
|
|
|
|
|
|
|
|
|
//将所有合并收费申请生成的结算信息插入收费结算
|
|
|
|
|
SqlParameter[] settleParms = new SqlParameter[]{
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_GID, SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_NO, SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_SETTLE_MODE, SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_CUSTOMER_NAME,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_SETTLE_TYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_AMOUNT_RMB,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_ACCOUNT_RMB,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_RATE,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_AMOUNT_USD,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_ACCOUNT_USD,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_TYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_VOUCHER_NO,SqlDbType.VarChar,50),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_SETTLE_USER,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_IS_EXPORT,SqlDbType.Bit),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_FINANCIAL_VOUCHER,SqlDbType.VarChar,50),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_STATUS,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_REMARK,SqlDbType.VarChar,1024),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_COMPANY_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter("@ACCOUNTS_CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@ACCOUNTS_RATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@ACCOUNTS_MONEY", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@PREPAY_CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@PREPAY_RATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@PREPAY_MONEY", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@AHSR_CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@AHSR_RATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@AHSR_MONEY", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@FINANCIAL_CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@FINANCIAL_RATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@FINANCIAL_MONEY", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@ADVANCE_CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@ADVANCE_RATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@ADVANCE_MONEY", SqlDbType.Decimal,9)
|
|
|
|
|
};
|
|
|
|
|
settleParms[0].Value = tempFeeSettlementEntity.GID;
|
|
|
|
|
settleParms[1].Value = strNewBillNo;
|
|
|
|
|
settleParms[2].Value = tempFeeSettlementEntity.SettleMode;
|
|
|
|
|
settleParms[3].Value = tempFeeSettlementEntity.CustomerName;
|
|
|
|
|
settleParms[4].Value = tempFeeSettlementEntity.SettleType;
|
|
|
|
|
settleParms[5].Value = tempFeeSettlementEntity.AmountRMB;
|
|
|
|
|
settleParms[6].Value = tempFeeSettlementEntity.AccountRMB;
|
|
|
|
|
settleParms[7].Value = tempFeeSettlementEntity.Rate;
|
|
|
|
|
settleParms[8].Value = tempFeeSettlementEntity.AmountUSD;
|
|
|
|
|
settleParms[9].Value = tempFeeSettlementEntity.AccountUSD;
|
|
|
|
|
settleParms[10].Value = tempFeeSettlementEntity.BillType;
|
|
|
|
|
settleParms[11].Value = tempFeeSettlementEntity.VoucherNO;
|
|
|
|
|
settleParms[12].Value = tempFeeSettlementEntity.SettleUser;
|
|
|
|
|
settleParms[13].Value = tempFeeSettlementEntity.IsExport;
|
|
|
|
|
settleParms[14].Value = tempFeeSettlementEntity.FinancialVoucher;
|
|
|
|
|
settleParms[15].Value = tempFeeSettlementEntity.BillStatus;
|
|
|
|
|
settleParms[16].Value = tempFeeSettlementEntity.Remark;
|
|
|
|
|
settleParms[17].Value = tempFeeSettlementEntity.CompanyID;
|
|
|
|
|
settleParms[18].Value = tempFeeSettlementEntity.ACCOUNTS_CURRENCY;//记账资料_币别
|
|
|
|
|
settleParms[19].Value = tempFeeSettlementEntity.ACCOUNTS_RATE;//记账资料_汇率
|
|
|
|
|
settleParms[20].Value = tempFeeSettlementEntity.ACCOUNTS_MONEY;//记账资料_金额
|
|
|
|
|
settleParms[21].Value = tempFeeSettlementEntity.PREPAY_CURRENCY;//预付支资料_币别
|
|
|
|
|
settleParms[22].Value = tempFeeSettlementEntity.PREPAY_RATE;//预付支资料_汇率
|
|
|
|
|
settleParms[23].Value = tempFeeSettlementEntity.PREPAY_MONEY;//预付支资料_金额
|
|
|
|
|
settleParms[24].Value = tempFeeSettlementEntity.AHSR_CURRENCY;//实付支资料_币别
|
|
|
|
|
settleParms[25].Value = tempFeeSettlementEntity.AHSR_RATE;//实付支资料_汇率
|
|
|
|
|
settleParms[26].Value = tempFeeSettlementEntity.AHSR_MONEY;//实付支资料_金额
|
|
|
|
|
settleParms[27].Value = tempFeeSettlementEntity.FINANCIAL_CURRENCY;//财务费用_币别
|
|
|
|
|
settleParms[28].Value = tempFeeSettlementEntity.FINANCIAL_RATE;//财务费用_汇率
|
|
|
|
|
settleParms[29].Value = tempFeeSettlementEntity.FINANCIAL_MONEY;//财务费用_金额
|
|
|
|
|
settleParms[30].Value = tempFeeSettlementEntity.ADVANCE_CURRENCY;//预付支取用资料_币别
|
|
|
|
|
settleParms[31].Value = tempFeeSettlementEntity.ADVANCE_RATE;//预付支取用资料_汇率
|
|
|
|
|
settleParms[32].Value = tempFeeSettlementEntity.ADVANCE_MONEY;//预付支取用资料_金额
|
|
|
|
|
//将所有合并收费申请生成的结算信息插入收费结算
|
|
|
|
|
string SQL_INSERT_CH_FEE_SETTLEMENT_FOR_MERGE = "INSERT INTO ch_fee_settlement(GID, BILLNO, BILLDATE, SETTLEMODE, CUSTOMERNAME, SETTLETYPE, AMOUNTRMB, ACCOUNTRMB, RATE, AMOUNTUSD, ACCOUNTUSD, BILLTYPE, VOUCHERNO, SETTLEUSER, SETTLETIME, ISEXPORT, FINANCIALVOUCHER, BILLSTATUS, REMARK,COMPANYID,ACCOUNTS_CURRENCY,ACCOUNTS_RATE,ACCOUNTS_MONEY,PREPAY_CURRENCY,PREPAY_RATE,PREPAY_MONEY,AHSR_CURRENCY,AHSR_RATE,AHSR_MONEY,FINANCIAL_CURRENCY,FINANCIAL_RATE,FINANCIAL_MONEY,ADVANCE_CURRENCY,ADVANCE_RATE,ADVANCE_MONEY)"
|
|
|
|
|
+ " VALUES(@gid,@bill_no,GETDATE(),@settle_mode,@customer_name,@settle_type,@amount_rmb,@account_rmb,@rate,@amount_usd,@account_usd,@bill_type,@voucher_no,@settle_user,GETDATE(),@is_export,@financial_voucher,@bill_status,@remark,@company_id,@ACCOUNTS_CURRENCY,@ACCOUNTS_RATE,@ACCOUNTS_MONEY,@PREPAY_CURRENCY,@PREPAY_RATE,@PREPAY_MONEY,@AHSR_CURRENCY,@AHSR_RATE,@AHSR_MONEY,@FINANCIAL_CURRENCY,@FINANCIAL_RATE,@FINANCIAL_MONEY,@ADVANCE_CURRENCY,@ADVANCE_RATE,@ADVANCE_MONEY)";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_CH_FEE_SETTLEMENT_FOR_MERGE, settleParms);
|
|
|
|
|
|
|
|
|
|
//将所有合并收费申请费用明细插入收费结算
|
|
|
|
|
SqlParameter[] insertFeeDoParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_NO,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_SETTLE_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
insertFeeDoParms[0].Value = strNewBillNo;
|
|
|
|
|
insertFeeDoParms[1].Value = tempFeeSettlementEntity.GID;
|
|
|
|
|
string SQL_INSERT_CH_FEE_FEE_DO_FOR_MERGE = " INSERT INTO ch_fee_do(GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY,AMOUNT,DOAMOUNT,FEETYPE,CATEGORY,BILLSTATUS,"
|
|
|
|
|
+ " REMARK,CREATETIME,EXCHANGERATE,ORIGCURRENCY,ORIGAMOUNT,INVOICESETTLENO,COMPANYID) "
|
|
|
|
|
+ " SELECT newid(),@bill_no,A.BSNO,A.MBLNO,A.HBLNO,A.CUSTOMERNAME,A.BSTYPE,A.FEEID,A.FEENAME,A.CURRENCY,A.AMOUNT,A.DOAMOUNT,A.FEETYPE,A.CATEGORY,A.BILLSTATUS,A.REMARK,GETDATE(), "
|
|
|
|
|
+ " A.EXCHANGERATE,A.ORIGCURRENCY,A.ORIGAMOUNT,A.INVOICESETTLENO,A.COMPANYID FROM ch_fee_do AS A INNER JOIN ch_fee_RecvApplication as B ON A.BILLNO = B.BILLNO AND A.COMPANYID = B.COMPANYID "
|
|
|
|
|
+ " INNER JOIN ch_fee_settle_link as C ON B.GID = C.RELATIONSUBID WHERE C.SETTLEID = @settle_id ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_CH_FEE_FEE_DO_FOR_MERGE, insertFeeDoParms);
|
|
|
|
|
|
|
|
|
|
//更新收费申请状态为已经结算
|
|
|
|
|
SqlParameter[] updateRecvAppStateParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_SETTLE_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
updateRecvAppStateParms[0].Value = tempFeeSettlementEntity.GID;
|
|
|
|
|
string SQL_UPDATE_CH_FEE_PAY_APP_SETTLED = " UPDATE ch_fee_RecvApplication SET BILLSTATUS = 4 FROM ch_fee_settle_link WHERE ch_fee_settle_link.RELATIONSUBID = ch_fee_RecvApplication.GID AND SETTLEID = @settle_id ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_PAY_APP_SETTLED, updateRecvAppStateParms);
|
|
|
|
|
|
|
|
|
|
//更新收费申请费用明细状态为已结算
|
|
|
|
|
SqlParameter[] updateFeeDoStateParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_PAY_APP_GID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
updateFeeDoStateParms[0].Value = tempFeeSettlementEntity.GID;
|
|
|
|
|
string SQL_UPDATE_CH_FEE_DO_APP_SETTLED = " UPDATE ch_fee_do SET ISDELETED = 1 FROM ch_fee_RecvApplication WHERE ch_fee_RecvApplication.BILLNO = ch_fee_do.BILLNO AND ch_fee_RecvApplication.COMPANYID = ch_fee_do.COMPANYID AND ch_fee_RecvApplication.GID = @gid ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_DO_APP_SETTLED, updateFeeDoStateParms);
|
|
|
|
|
|
|
|
|
|
//根据收费申请费用明细更新费用表
|
|
|
|
|
SqlParameter[] updateFeeParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BILL_NO,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_COMPANY_ID,SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
updateFeeParms[0].Value = strNewBillNo;
|
|
|
|
|
updateFeeParms[1].Value = tempCompanyID;
|
|
|
|
|
string SQL_UPDATE_CH_FEE_BY_CH_FEE_DO_FOR_MERGE = " UPDATE ch_fee SET ch_fee.SETTLEMENT = ISNULL(ch_fee.SETTLEMENT,0) + ch_fee_do.ORIGAMOUNT "
|
|
|
|
|
+ " FROM ch_fee_do WHERE ch_fee.GID = ch_fee_do.FEEID AND ch_fee_do.BILLNO = @bill_no AND ch_fee_do.COMPANYID = @company_id ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_BY_CH_FEE_DO_FOR_MERGE, updateFeeParms);
|
|
|
|
|
}
|
|
|
|
|
//事务提交
|
|
|
|
|
sqlTran.Commit();
|
|
|
|
|
|
|
|
|
|
if (validState == 0)
|
|
|
|
|
{
|
|
|
|
|
iResult = 1;//状态为1表示插入成功
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
iResult = -3;//费用表没有足够的申请金额使用,无法提交收费申请
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception execError)
|
|
|
|
|
{
|
|
|
|
|
iResult = -1;//有异常,插入失败
|
|
|
|
|
sqlTran.Rollback();
|
|
|
|
|
iResult = -2;//插入异常,事务已回滚成功
|
|
|
|
|
throw execError;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
SqlHelper.CloseConnection();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return iResult;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 执行结算收费申请结算
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 执行结算收费申请结算
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="tempSettlementEntity"></param>
|
|
|
|
|
/// <param name="tempFeeRecvApplicationEntity"></param>
|
|
|
|
|
/// <param name="tempFeeDoEntities"></param>
|
|
|
|
|
/// <param name="tempCompanyID"></param>
|
|
|
|
|
/// <param name="strUserID"></param>
|
|
|
|
|
/// <param name="tempFeeEntities"></param>
|
|
|
|
|
/// <param name="alFeeDo"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public int SettleFeeRecvApplication(FeeSettlementEntity tempSettlementEntity, ChFeeRecvApplicationEntity tempFeeRecvApplicationEntity, IList<FeeDoEntity> tempFeeDoEntities, string tempCompanyID, string strUserID, IList<FeeEntity> tempFeeEntities, ArrayList alFeeDo)
|
|
|
|
|
{
|
|
|
|
|
int iResult = 0;
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//插入结算信息
|
|
|
|
|
SqlParameter[] settleParms = new SqlParameter[]{
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_GID, SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_NO, SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_SETTLE_MODE, SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_CUSTOMER_NAME,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_SETTLE_TYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_AMOUNT_RMB,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_ACCOUNT_RMB,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_RATE,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_AMOUNT_USD,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_ACCOUNT_USD,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_TYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_VOUCHER_NO,SqlDbType.VarChar,50),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_SETTLE_USER,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_IS_EXPORT,SqlDbType.Bit),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_FINANCIAL_VOUCHER,SqlDbType.VarChar,50),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_BILL_STATUS,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_REMARK,SqlDbType.VarChar,1024),
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT_COMPANY_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter("@AUDITUSER",SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter("@ACCOUNTS_CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@ACCOUNTS_RATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@ACCOUNTS_MONEY", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@PREPAY_CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@PREPAY_RATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@PREPAY_MONEY", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@AHSR_CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@AHSR_RATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@AHSR_MONEY", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@FINANCIAL_CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@FINANCIAL_RATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@FINANCIAL_MONEY", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@ADVANCE_CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@ADVANCE_RATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@ADVANCE_MONEY", SqlDbType.Decimal,9)
|
|
|
|
|
};
|
|
|
|
|
settleParms[0].Value = tempSettlementEntity.GID;
|
|
|
|
|
settleParms[1].Value = tempSettlementEntity.BillNO;
|
|
|
|
|
settleParms[2].Value = tempSettlementEntity.SettleMode;
|
|
|
|
|
settleParms[3].Value = tempSettlementEntity.CustomerName;
|
|
|
|
|
settleParms[4].Value = tempSettlementEntity.SettleType;
|
|
|
|
|
settleParms[5].Value = tempSettlementEntity.AmountRMB;
|
|
|
|
|
settleParms[6].Value = tempSettlementEntity.AccountRMB;
|
|
|
|
|
settleParms[7].Value = tempSettlementEntity.Rate;
|
|
|
|
|
settleParms[8].Value = tempSettlementEntity.AmountUSD;
|
|
|
|
|
settleParms[9].Value = tempSettlementEntity.AccountUSD;
|
|
|
|
|
settleParms[10].Value = tempSettlementEntity.BillType;
|
|
|
|
|
settleParms[11].Value = tempSettlementEntity.VoucherNO;
|
|
|
|
|
settleParms[12].Value = tempSettlementEntity.SettleUser;
|
|
|
|
|
settleParms[13].Value = tempSettlementEntity.IsExport;
|
|
|
|
|
settleParms[14].Value = tempSettlementEntity.FinancialVoucher;
|
|
|
|
|
settleParms[15].Value = tempSettlementEntity.BillStatus;
|
|
|
|
|
settleParms[16].Value = tempSettlementEntity.Remark;
|
|
|
|
|
settleParms[17].Value = tempSettlementEntity.CompanyID;
|
|
|
|
|
settleParms[18].Value = tempSettlementEntity.AuditUser;
|
|
|
|
|
settleParms[19].Value = tempSettlementEntity.ACCOUNTS_CURRENCY;
|
|
|
|
|
settleParms[20].Value = tempSettlementEntity.ACCOUNTS_RATE;
|
|
|
|
|
settleParms[21].Value = tempSettlementEntity.ACCOUNTS_MONEY;
|
|
|
|
|
settleParms[22].Value = tempSettlementEntity.PREPAY_CURRENCY;
|
|
|
|
|
settleParms[23].Value = tempSettlementEntity.PREPAY_RATE;
|
|
|
|
|
settleParms[24].Value = tempSettlementEntity.PREPAY_MONEY;
|
|
|
|
|
settleParms[25].Value = tempSettlementEntity.AHSR_CURRENCY;
|
|
|
|
|
settleParms[26].Value = tempSettlementEntity.AHSR_RATE;
|
|
|
|
|
settleParms[27].Value = tempSettlementEntity.AHSR_MONEY;
|
|
|
|
|
settleParms[28].Value = tempSettlementEntity.FINANCIAL_CURRENCY;
|
|
|
|
|
settleParms[29].Value = tempSettlementEntity.FINANCIAL_RATE;
|
|
|
|
|
settleParms[30].Value = tempSettlementEntity.FINANCIAL_MONEY;
|
|
|
|
|
settleParms[31].Value = tempSettlementEntity.ADVANCE_CURRENCY;
|
|
|
|
|
settleParms[32].Value = tempSettlementEntity.ADVANCE_RATE;
|
|
|
|
|
settleParms[33].Value = tempSettlementEntity.ADVANCE_MONEY;
|
|
|
|
|
//
|
|
|
|
|
string SETTLETIME = tempSettlementEntity.SettleTime.ToString().Trim().IndexOf("0001") > -1 ? "GETDATE()," : "'" + tempSettlementEntity.SettleTime.ToString().Trim() + "',";
|
|
|
|
|
string SETTLETIME_NAME = tempSettlementEntity.SettleTime.ToString().Trim().IndexOf("0001") > -1 ? "SETTLETIME," : "SETTLETIME,";
|
|
|
|
|
string SQL_INSERT_CH_FEE_SETTLEMENT = String.Format("INSERT INTO ch_fee_settlement(GID, BILLNO, BILLDATE, SETTLEMODE, CUSTOMERNAME, SETTLETYPE, AMOUNTRMB, ACCOUNTRMB, RATE, AMOUNTUSD, ACCOUNTUSD,BILLTYPE, VOUCHERNO, SETTLEUSER, {0} ISEXPORT, FINANCIALVOUCHER, BILLSTATUS, REMARK,COMPANYID,AUDITUSER,AUDITTIME,ACCOUNTS_CURRENCY,ACCOUNTS_RATE,ACCOUNTS_MONEY,PREPAY_CURRENCY,PREPAY_RATE,PREPAY_MONEY,AHSR_CURRENCY,AHSR_RATE,AHSR_MONEY,FINANCIAL_CURRENCY,FINANCIAL_RATE,FINANCIAL_MONEY,ADVANCE_CURRENCY,ADVANCE_RATE,ADVANCE_MONEY)"
|
|
|
|
|
+ " VALUES(@gid,@bill_no,GETDATE(),@settle_mode,@customer_name,@settle_type,@amount_rmb,@account_rmb,@rate,@amount_usd,@account_usd,@bill_type,@voucher_no,@settle_user,{1}@is_export,@financial_voucher,@bill_status,@remark,@company_id,@AUDITUSER,getdate(),@ACCOUNTS_CURRENCY,@ACCOUNTS_RATE,@ACCOUNTS_MONEY,@PREPAY_CURRENCY,@PREPAY_RATE,@PREPAY_MONEY,@AHSR_CURRENCY,@AHSR_RATE,@AHSR_MONEY,@FINANCIAL_CURRENCY,@FINANCIAL_RATE,@FINANCIAL_MONEY,@ADVANCE_CURRENCY,@ADVANCE_RATE,@ADVANCE_MONEY)", SETTLETIME_NAME, SETTLETIME);
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_CH_FEE_SETTLEMENT, settleParms);
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
//插入一条新的记录到ch_fee_do表
|
|
|
|
|
SqlParameter[] doParms = new SqlParameter[]{
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_GID, SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BILL_NO, SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BSNO, SqlDbType.VarChar,100),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_MBL_NO,SqlDbType.VarChar,30),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_HBL_NO,SqlDbType.VarChar,30),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_CUSTOMER_NAME,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BSTYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_FEE_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_FEE_NAME,SqlDbType.VarChar,100),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_CURRENCY,SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_AMOUNT,SqlDbType.Decimal,40),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_DO_AMOUNT,SqlDbType.Decimal,40),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_FEE_TYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_CATEGORY,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_BILL_STATUS,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_REMARK,SqlDbType.VarChar,1024),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_COMPANY_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_ORIG_AMOUNT,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter("@EXCHANGERATE",SqlDbType.Decimal)
|
|
|
|
|
};
|
|
|
|
|
//遍历ch_fee_do与ch_fee表,将ch_fee表AMOUNT和SETTLEMENT字段与ch_fee_do表DOAMOUNT做对比,如果
|
|
|
|
|
foreach (FeeDoEntity feeDoEntity in tempFeeDoEntities)
|
|
|
|
|
{
|
|
|
|
|
feeDoEntity.GID = Guid.NewGuid().ToString();
|
|
|
|
|
doParms[0].Value = feeDoEntity.GID;
|
|
|
|
|
doParms[1].Value = tempSettlementEntity.BillNO;//插入新的业务编号
|
|
|
|
|
doParms[2].Value = feeDoEntity.BSNO;
|
|
|
|
|
doParms[3].Value = feeDoEntity.MBLNO;
|
|
|
|
|
doParms[4].Value = feeDoEntity.HBLNO;
|
|
|
|
|
doParms[5].Value = feeDoEntity.CustomerName;
|
|
|
|
|
doParms[6].Value = feeDoEntity.BSType;
|
|
|
|
|
doParms[7].Value = feeDoEntity.FeeID;
|
|
|
|
|
doParms[8].Value = feeDoEntity.FeeName;
|
|
|
|
|
doParms[9].Value = feeDoEntity.Currency;
|
|
|
|
|
doParms[10].Value = feeDoEntity.Amount;
|
|
|
|
|
doParms[11].Value = feeDoEntity.DoAmount;
|
|
|
|
|
doParms[12].Value = feeDoEntity.FeeType;
|
|
|
|
|
doParms[13].Value = 9;
|
|
|
|
|
doParms[14].Value = feeDoEntity.BillStatus;
|
|
|
|
|
doParms[15].Value = feeDoEntity.Remark;
|
|
|
|
|
doParms[16].Value = feeDoEntity.CompanyID == null ? "" : feeDoEntity.CompanyID;
|
|
|
|
|
doParms[17].Value = feeDoEntity.OriginalFeeCSTL == 0 ? 0 : feeDoEntity.OriginalFeeCSTL;
|
|
|
|
|
doParms[18].Value = feeDoEntity.ExchangeRate == 0 ? 1 : feeDoEntity.ExchangeRate;
|
|
|
|
|
string SQL_INSERT_FEE_DO = " INSERT INTO ch_fee_do(GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY,AMOUNT,DOAMOUNT,FEETYPE,CATEGORY,BILLSTATUS,REMARK,COMPANYID,ORIGAMOUNT,EXCHANGERATE) "
|
|
|
|
|
+ " VALUES(@gid,@bill_no,@bsno,@mbl_no,@nbl_no,@customer_name,@bs_type,@fee_id,@fee_name,@currency,@amount,@do_amount,@fee_type,@category,@bill_status,@remark,@company_id,@orig_amount,@EXCHANGERATE) ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_FEE_DO, doParms);
|
|
|
|
|
|
|
|
|
|
//先更新ch_fee费用信息
|
|
|
|
|
SqlParameter[] feeParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_FEE_SETTLEMENT,SqlDbType.Decimal,20),
|
|
|
|
|
new SqlParameter(PARM_FEE_DO_GID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter("@INVOICENUM",SqlDbType.VarChar,200)
|
|
|
|
|
};
|
|
|
|
|
feeParms[0].Value = feeDoEntity.DoAmount;//.Amount;
|
|
|
|
|
feeParms[1].Value = feeDoEntity.GID;
|
|
|
|
|
if (feeDoEntity.Currency.ToString().Trim() == "RMB")
|
|
|
|
|
{
|
|
|
|
|
feeParms[2].Value = tempSettlementEntity.ChequeNo;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
feeParms[2].Value = tempSettlementEntity.ChequeNoUsd;
|
|
|
|
|
}
|
|
|
|
|
string SQL_UPDATE_CH_FEE_ACCEPT_SETTLE = " UPDATE ch_fee SET ch_fee.SETTLEMENT = ch_fee.SETTLEMENT+@settlement,ch_fee.FEESTATUS = C.FEESTATUS,ch_fee.INVOICENUM = @INVOICENUM "
|
|
|
|
|
+ " FROM "
|
|
|
|
|
+ " (SELECT A.GID,CASE WHEN B.DOAMOUNT < A.AMOUNT THEN CASE WHEN B.DOAMOUNT+A.SETTLEMENT = A.AMOUNT THEN 9 ELSE 8 END ELSE "
|
|
|
|
|
+ " CASE WHEN B.DOAMOUNT = A.AMOUNT THEN 9 END END as FEESTATUS FROM ch_fee as A INNER JOIN ch_fee_do as B ON A.GID = B.FEEID WHERE B.GID = @gid) as C "
|
|
|
|
|
+ " WHERE C.GID = ch_fee.GID ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_CH_FEE_ACCEPT_SETTLE, feeParms);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ch_fee 插入 汇率损益
|
|
|
|
|
if (tempFeeEntities != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (FeeEntity feeEntity in tempFeeEntities)
|
|
|
|
|
{
|
|
|
|
|
SqlParameter[] feeParms2 = new SqlParameter[] {
|
|
|
|
|
new SqlParameter("@GID", SqlDbType.VarChar,36) ,
|
|
|
|
|
new SqlParameter("@FEENAME", SqlDbType.VarChar,100) ,
|
|
|
|
|
new SqlParameter("@CUSTOMERNAME", SqlDbType.VarChar,50) ,
|
|
|
|
|
new SqlParameter("@UNIT", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@UNITPRICE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@QUANTITY", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@COMMISSIONRATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@AMOUNT", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@CURRENCY", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@EXCHANGERATE", SqlDbType.Decimal,9) ,
|
|
|
|
|
new SqlParameter("@FEEFRT", SqlDbType.VarChar,20) ,
|
|
|
|
|
new SqlParameter("@REMARK", SqlDbType.VarChar,1024) ,
|
|
|
|
|
new SqlParameter("@ISADVANCEDPAY", SqlDbType.Bit,1) ,
|
|
|
|
|
new SqlParameter("@FEETYPE", SqlDbType.Int,4) ,
|
|
|
|
|
new SqlParameter("@BSNO", SqlDbType.VarChar,100) ,
|
|
|
|
|
new SqlParameter("@ENTEROPERATOR", SqlDbType.VarChar,50) ,
|
|
|
|
|
new SqlParameter("@FEESTATUS", SqlDbType.Int,4) ,
|
|
|
|
|
new SqlParameter("@WMSOUTBSNO", SqlDbType.VarChar,100) ,
|
|
|
|
|
new SqlParameter("@LINENUM", SqlDbType.Int,4) ,
|
|
|
|
|
new SqlParameter("@SETTLEMENT", SqlDbType.Decimal,9)
|
|
|
|
|
};
|
|
|
|
|
feeParms2[0].Value = feeEntity.GID;
|
|
|
|
|
feeParms2[1].Value = feeEntity.FeeName;
|
|
|
|
|
feeParms2[2].Value = feeEntity.CustomerName;
|
|
|
|
|
feeParms2[3].Value = feeEntity.Unit;
|
|
|
|
|
feeParms2[4].Value = feeEntity.UnitPrice;
|
|
|
|
|
feeParms2[5].Value = feeEntity.Quantity;
|
|
|
|
|
feeParms2[6].Value = feeEntity.CommissionRate;
|
|
|
|
|
feeParms2[7].Value = feeEntity.Amount;
|
|
|
|
|
feeParms2[8].Value = feeEntity.Currency;
|
|
|
|
|
feeParms2[9].Value = feeEntity.ExchangeRate;
|
|
|
|
|
feeParms2[10].Value = feeEntity.FeeFrt;
|
|
|
|
|
feeParms2[11].Value = feeEntity.Remark;
|
|
|
|
|
feeParms2[12].Value = feeEntity.IsAdvancePay;
|
|
|
|
|
feeParms2[13].Value = feeEntity.FeeType;
|
|
|
|
|
feeParms2[14].Value = feeEntity.BSNO;
|
|
|
|
|
feeParms2[15].Value = feeEntity.EnterOperator;
|
|
|
|
|
feeParms2[16].Value = feeEntity.FeeStatus;
|
|
|
|
|
feeParms2[17].Value = feeEntity.WMSOUTBSNO;
|
|
|
|
|
feeParms2[18].Value = feeEntity.LINENUM;
|
|
|
|
|
feeParms2[19].Value = feeEntity.Settlement;
|
|
|
|
|
string SQL_INSERT_CH_FEE = " INSERT INTO ch_fee(GID,FEENAME,CUSTOMERNAME,UNIT,UNITPRICE,QUANTITY,COMMISSIONRATE,AMOUNT,CURRENCY,EXCHANGERATE,FEEFRT,REMARK,ISADVANCEDPAY,FEETYPE,BSNO,ENTEROPERATOR,FEESTATUS,WMSOUTBSNO,LINENUM,SETTLEMENT,ENTERDATE) "
|
|
|
|
|
+ " VALUES (@GID,@FEENAME,@CUSTOMERNAME,@UNIT,@UNITPRICE,@QUANTITY,@COMMISSIONRATE,@AMOUNT,@CURRENCY,@EXCHANGERATE,@FEEFRT,@REMARK,@ISADVANCEDPAY,@FEETYPE,@BSNO,@ENTEROPERATOR,@FEESTATUS,@WMSOUTBSNO,@LINENUM,@SETTLEMENT,getdate()) ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_CH_FEE, feeParms2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//遍历ch_fee_do
|
|
|
|
|
if (alFeeDo != null)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < alFeeDo.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
string sSQL = alFeeDo[i].ToString();
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//更新申请表
|
|
|
|
|
SqlParameter[] appParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter("@bill_status",SqlDbType.Int),
|
|
|
|
|
new SqlParameter("@bill_no",SqlDbType.VarChar,20),
|
|
|
|
|
new SqlParameter("@company_id",SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter("@SETTLERMB",SqlDbType.Decimal),
|
|
|
|
|
new SqlParameter("@SETTLEUSD",SqlDbType.Decimal),
|
|
|
|
|
new SqlParameter("@SETTLERATE",SqlDbType.Decimal),
|
|
|
|
|
new SqlParameter("@SETTLEUSER",SqlDbType.VarChar,36)
|
|
|
|
|
};
|
|
|
|
|
appParms[0].Value = tempFeeRecvApplicationEntity.BILLSTATUS;
|
|
|
|
|
appParms[1].Value = tempFeeRecvApplicationEntity.BILLNO;
|
|
|
|
|
appParms[2].Value = tempCompanyID;
|
|
|
|
|
appParms[3].Value = tempFeeRecvApplicationEntity.SETTLERMB;
|
|
|
|
|
appParms[4].Value = tempFeeRecvApplicationEntity.SETTLEUSD;
|
|
|
|
|
appParms[5].Value = tempFeeRecvApplicationEntity.SETTLERATE;
|
|
|
|
|
appParms[6].Value = tempFeeRecvApplicationEntity.SETTLEUSER;
|
|
|
|
|
|
|
|
|
|
string SETTLETIME_1 = tempSettlementEntity.SettleTime.ToString().Trim().IndexOf("0001") > -1 ? "SETTLETIME=GETDATE()," : "SETTLETIME='" + tempSettlementEntity.SettleTime.ToString().Trim() + "',";
|
|
|
|
|
|
|
|
|
|
string SQL_UPDATE_PAY_APPLICATION_STATUS_SETTLER = String.Format("UPDATE ch_fee_RecvApplication SET BILLSTATUS = @bill_status,SETTLERMB=@SETTLERMB,SETTLEUSD=@SETTLEUSD,SETTLERATE=@SETTLERATE,{0}SETTLEUSER=@SETTLEUSER WHERE BILLNO = @bill_no AND COMPANYID = @company_id ", SETTLETIME_1);
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_UPDATE_PAY_APPLICATION_STATUS_SETTLER, appParms);//SQL_UPDATE_PAY_APPLICATION_STATUS
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//插入 费用结算关联表ch_fee_settle_link
|
|
|
|
|
SqlParameter[] insertSettleLinkParms = new SqlParameter[] {
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_SETTLE_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_TYPE,SqlDbType.Int),
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_RELATION_SUB_ID,SqlDbType.VarChar,36),
|
|
|
|
|
new SqlParameter(PARM_CH_FEE_SETTLE_CREATE_USER,SqlDbType.VarChar,36),
|
|
|
|
|
};
|
|
|
|
|
insertSettleLinkParms[0].Value = tempSettlementEntity.GID;
|
|
|
|
|
insertSettleLinkParms[1].Value = 1;
|
|
|
|
|
insertSettleLinkParms[2].Value = tempFeeRecvApplicationEntity.GID;
|
|
|
|
|
insertSettleLinkParms[3].Value = strUserID;
|
|
|
|
|
//建立收费结算关联信息(生成收费结算和收费申请关联关系)
|
|
|
|
|
string SQL_INSERT_CH_FEE_SETTLE_LINK = " INSERT INTO ch_fee_settle_link(GID,TYPE,SETTLEID,RELATIONSUBID,CREATEUSER,CREATETIME) "
|
|
|
|
|
+ " VALUES(newid(),@type,@settle_id,@relation_sub_id,@create_user,GETDATE()) ";
|
|
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, SQL_INSERT_CH_FEE_SETTLE_LINK, insertSettleLinkParms);
|
|
|
|
|
|
|
|
|
|
//事务提交
|
|
|
|
|
sqlTran.Commit();
|
|
|
|
|
|
|
|
|
|
iResult = 1;//状态为1表示插入成功
|
|
|
|
|
}
|
|
|
|
|
catch (Exception execError)
|
|
|
|
|
{
|
|
|
|
|
iResult = -1;//有异常,插入失败
|
|
|
|
|
sqlTran.Rollback();
|
|
|
|
|
iResult = -2;//插入异常,事务已回滚成功
|
|
|
|
|
throw execError;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
SqlHelper.CloseConnection();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return iResult;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
//
|
|
|
|
|
}
|
|
|
|
|
}
|