server.transfer
function transValue()

{
document.getElementById("hidInvTitle").value=document.getElementById("txtTitle").value;//开票抬头隐藏域,赋值
//document.getElementById("hidInvDate").value=document.getElementById("PickDate_Qg").value;//开票日期隐藏域,赋值,在CS代码的“确定”事件的结尾
document.getElementById("hidBankName").value=document.form1.ddlBankName[document.form1.ddlBankName.selectedIndex].text;//开户行隐藏域,赋值
document.getElementById("hidAccountNo").value=document.form1.ddlBankName[document.form1.ddlBankName.selectedIndex].value;//开户账号隐藏域,右边用document.form1.txtAccountNo.text更好些
document.getElementById("hidFeeItem").value=document.form1.txtFeeItem.value;//收费内容
// alert(document.getElementById("hidFeeItem").value);
document.getElementById("hidAmount").value=document.form1.txtAmount.value;//收费内容金额
document.getElementById("hidRemark").value=document.form1.txtRemark.value;//备注
//alert(document.getElementById("hidRemark").value);
document.getElementById("hidCurrency").value=document.form1.txtCurrency.value;//货币种类
document.getElementById("hidUpper").value=document.form1.txtAmountUpper.value;//大写金额
document.getElementById("hidLower").value=document.form1.txtAmountTotal.value;//小写金额
document.getElementById("hidDrawer").value=document.form1.txtDrawer.value;//开票人
}


</script>

<asp:Button ID="btnConfirm" runat="server" CssClass="btn" Text="确定" OnClientClick="transValue()" OnClick="btnConfirm_Click" />

protected void btnConfirm_Click(object sender, EventArgs e)

{
string szdw_id = "";
System.Guid guidSZDW = new Guid();//如果ViewState中一直没有涉帐单位的ID,inv_main表中就可能插入新的不相关的ID,依据这个不相关ID在PD_COMPANY中找不到相关的COMPANY
if (ViewState["SZDW_ID"] != null)

{
szdw_id = ViewState["SZDW_ID"].ToString();
guidSZDW = new Guid(szdw_id);
}//隐含如果ViewState["SZDW_ID"] == null 则放System.Guid guidSZDE = new Guid();生成的GUID进INV_MAIN该GUID组成部分全为0-〉32个0


从ViewState中取值#region 从ViewState中取值
string strOP_CODE = "";//可能要记录以后来作废这张发票的人的CODE,???????????????????????????????????????????
if (ViewState["OP_CODE"] != null)

{
strOP_CODE = ViewState["OP_CODE"].ToString().Trim();
}

string strCR_CODE = "";//Session中保存的UserCode
if (Session["UserCode"] != null)

{
strCR_CODE = Session["UserCode"].ToString().Trim();
}
DateTime dateETD = DateTime.Now;
if (ViewState["ETD"] != null)//JOB_SE中的字段ETD,通过ViewState从Page_Load中传过来,在本inv_main表中做"DATE_JOB"业务日期 ,如果JOB_SE中ETD为空,这里该取什么值

{
dateETD = Convert.ToDateTime(ViewState["ETD"]);
}
#endregion 从ViewState中取值 END

string strSqlInsert = @"
insert into inv_main
(ID ,INV_NO,INV_TITLE,COMPANY_ID,INV_DATE,INV_REN,CURRENCY,AMOUNT,DETAIL_FEE,DETAIL_AMOUNT,DETAIL_REMARK,BANK_NAME,ACCOUNT_NO,JOBNO,LPORT,DPORT,DEST,WTBH,DATE_JOB,AMOUNT_CHN,AMOUNT_HX,AMOUNT_WHX,CR_CODE,CR_TIME,OP_CODE,OP_TIME)
values
(@ID,@INV_NO,@INV_TITLE,@COMPANY_ID,@INV_DATE,@INV_REN,@CURRENCY,@AMOUNT,@DETAIL_FEE,@DETAIL_AMOUNT,@DETAIL_REMARK,@BANK_NAME,@ACCOUNT_NO,@JOBNO,@LPORT,@DPORT,@DEST,@WTBH,@DATE_JOB,@AMOUNT_CHN,@AMOUNT_HX,@AMOUNT_WHX,@CR_CODE,@CR_TIME,@OP_CODE,@OP_TIME)";
try

{

insert inot inv_main new record#region insert inot inv_main new record
conn.Open();
SqlCommand comm = new SqlCommand(strSqlInsert, conn);
SqlParameter spara = null;
spara = comm.Parameters.Add(new SqlParameter("@ID", SqlDbType.UniqueIdentifier, 32));
comm.Parameters["@ID"].Value = System.Guid.NewGuid();//invoice_ID

spara = comm.Parameters.Add(new SqlParameter("@INV_NO", SqlDbType.NVarChar, 50));
comm.Parameters["@INV_NO"].Value = txtInvoiceNumber.Text.Trim();//发票号码,手工输入

spara = comm.Parameters.Add(new SqlParameter("@INV_TITLE", SqlDbType.NVarChar, 255));
comm.Parameters["@INV_TITLE"].Value = txtTitle.Text.Trim();//开票抬头,文本框

spara = comm.Parameters.Add(new SqlParameter("@COMPANY_ID", SqlDbType.UniqueIdentifier, 32));
comm.Parameters["@COMPANY_ID"].Value = guidSZDW;//有可能先输入了费用,又把该公司的信息从Company表中删除,导致此处为空,涉帐单位

spara = comm.Parameters.Add(new SqlParameter("@INV_DATE", SqlDbType.DateTime, 10));
if (PickDate_Qg.SelectedDates.Count > 0)//要先判断该日历控件有没有值

{
comm.Parameters["@INV_DATE"].Value = PickDate_Qg.SelectedDate;//开票日期
}
else

{
comm.Parameters["@INV_DATE"].Value = DBNull.Value;//取出来时也要先判断是否为空
}

spara = comm.Parameters.Add(new SqlParameter("@INV_REN", SqlDbType.VarChar, 50));
comm.Parameters["@INV_REN"].Value = txtDrawer.Text.Trim();//开票人

spara = comm.Parameters.Add(new SqlParameter("@CURRENCY", SqlDbType.VarChar, 50));
comm.Parameters["@CURRENCY"].Value = txtCurrency.Text.Trim();//币种

spara = comm.Parameters.Add(new SqlParameter("@AMOUNT", SqlDbType.Decimal, 52));//---->数据库中的类型为decimal(18,2)
comm.Parameters["@AMOUNT"].Value = txtAmountTotal.Text.Trim();//总金额,阿拉伯数字

spara = comm.Parameters.Add(new SqlParameter("@DETAIL_FEE", SqlDbType.VarChar, 500));
comm.Parameters["@DETAIL_FEE"].Value = txtFeeItem.Text.Trim();//收费内容\r\n这种换行怎么办,直接存进DB?

spara = comm.Parameters.Add(new SqlParameter("@DETAIL_AMOUNT", SqlDbType.VarChar, 500));
comm.Parameters["@DETAIL_AMOUNT"].Value = txtAmount.Text.Trim();//金额明细 \r\n这种换行怎么办,直接存进DB?

spara = comm.Parameters.Add(new SqlParameter("@DETAIL_REMARK", SqlDbType.VarChar, 500));
comm.Parameters["@DETAIL_REMARK"].Value = txtRemark.Text.Trim();//备注

spara = comm.Parameters.Add(new SqlParameter("@BANK_NAME", SqlDbType.VarChar, 100));//开户行
comm.Parameters["@BANK_NAME"].Value = ddlBankName.Items[ddlBankName.SelectedIndex].Text;//多个账户对应多个银行名

spara = comm.Parameters.Add(new SqlParameter("@ACCOUNT_NO", SqlDbType.VarChar, 50));//开户帐号
comm.Parameters["@ACCOUNT_NO"].Value = ddlBankName.Items[ddlBankName.SelectedIndex].Value;//多个账户对应多个银行名

spara = comm.Parameters.Add(new SqlParameter("@JOBNO", SqlDbType.VarChar, 500));
comm.Parameters["@JOBNO"].Value = txtJobNo.Text.Trim();//工作编号

spara = comm.Parameters.Add(new SqlParameter("@LPORT", SqlDbType.VarChar, 50));
comm.Parameters["@LPORT"].Value = txtLoadPort.Text.Trim();//装货港

spara = comm.Parameters.Add(new SqlParameter("@DPORT", SqlDbType.VarChar, 50));
comm.Parameters["@DPORT"].Value = txtDischargePort.Text.Trim();//卸货港

spara = comm.Parameters.Add(new SqlParameter("@DEST", SqlDbType.VarChar, 50));
comm.Parameters["@DEST"].Value = txtDestPort.Text.Trim();//目的地

spara = comm.Parameters.Add(new SqlParameter("@WTBH", SqlDbType.VarChar, 500));
comm.Parameters["@WTBH"].Value = txtCommissionNo.Text.Trim();//委托编号

spara = comm.Parameters.Add(new SqlParameter("@DATE_JOB", SqlDbType.DateTime, 10));
comm.Parameters["@DATE_JOB"].Value = dateETD;//业务日期 例如:海运出口为ETD

spara = comm.Parameters.Add(new SqlParameter("@AMOUNT_CHN", SqlDbType.VarChar, 100));
comm.Parameters["@AMOUNT_CHN"].Value = txtAmountUpper.Text.Trim();//总金额,中文大写

spara = comm.Parameters.Add(new SqlParameter("@AMOUNT_HX", SqlDbType.Decimal, 20));
comm.Parameters["@AMOUNT_HX"].Value = 0.00m;//核销金额,发票刚开出来,核销金额为0,还没开始核销

spara = comm.Parameters.Add(new SqlParameter("@AMOUNT_WHX", SqlDbType.Decimal, 20));
comm.Parameters["@AMOUNT_WHX"].Value = txtAmountTotal.Text.Trim();//未核销金额,发票刚开出来,全部金额,还没开始核销

spara = comm.Parameters.Add(new SqlParameter("@CR_CODE", SqlDbType.VarChar, 50));
comm.Parameters["@CR_CODE"].Value = strCR_CODE;//Session中保存的UserCode

spara = comm.Parameters.Add(new SqlParameter("@CR_TIME", SqlDbType.DateTime, 10));
comm.Parameters["@CR_TIME"].Value = DateTime.Now;//是本发票保存进数据库的时间 不是 JOB_SE表中的字段CR_TIME????dateCR_TIME,

spara = comm.Parameters.Add(new SqlParameter("@OP_CODE", SqlDbType.VarChar, 50));
comm.Parameters["@OP_CODE"].Value = strOP_CODE;//JOB_SE表中的字段OP_CODE

spara = comm.Parameters.Add(new SqlParameter("@OP_TIME", SqlDbType.DateTime, 10));
comm.Parameters["@OP_TIME"].Value = DateTime.Now;//不是JOB_SE表中的字段OP_TIME????dateOP_TIME

#endregion
comm.ExecuteNonQuery();

comm.Dispose();



/*从Page_Load中传strID过来,再次split成数组,ViweState好像不能存数组,更新fee_in或fee_out中的“已开票标志” flag_kp和 “发票号码” Invoice_No */#region /*从Page_Load中传strID过来,再次split成数组,ViweState好像不能存数组,更新fee_in或fee_out中的“已开票标志” flag_kp和 “发票号码” Invoice_No */
string strID = null;
if (ViewState["strID"] != null)

{
strID = ViewState["strID"].ToString();
}
string[] arrID = strID.Split(',');
string strSqlUpdate = "";
for (int i = 0; i < arrID.Length - 1; i++)//arrID.Length - 1是因为string[] arrID = strID.Split(',')最后一个元素为空

{
strSqlUpdate = @"set nocount on;update fee_in set flag_kp=1 where id= '" + arrID[i] + "'; update fee_out set flag_kp=1 where id='" + arrID[i] + "';";
strSqlUpdate += @"update fee_in set INVOICE_NO='" + txtInvoiceNumber.Text.Trim() + "'where id='"+arrID[i]+"';update fee_out set INVOICE_NO='" + txtInvoiceNumber.Text.Trim() + "'where id='"+arrID[i]+"';";
}
SqlCommand commUpdate = new SqlCommand(strSqlUpdate, conn);
commUpdate.ExecuteNonQuery();//update delete
commUpdate.Dispose();
#endregion



string invDateTemp = PickDate_Qg.SelectedDate.ToString("d");//不能通过隐藏域传递,现在通过QueryString传递

//if (!this.IsClientScriptBlockRegistered("clientScript"))
//{
// String scriptString = @"<script language=JavaScript>window.showModalDialog('invoice_print.aspx?ID=" + strid.ToString() + "',window,'status:Modeless;edge:raised;unadorned:no;scroll=yes;resizable:yes;center=yes;help:no;dialogwidth:800px;dialogheight:600px');</script>";
// this.RegisterClientScriptBlock("clientScript", scriptString);//注册客户端脚本块
//}



//Server.Transfer("invoice_print.aspx?ID=" + strID.ToString() + "");
Server.Transfer("invoice_print.aspx?invDate=" + invDateTemp + "");
//Response.Redirect("invoice_print.aspx?ID=" + strID.ToString() + "");
//Response.Write("<script>"+"window.showModalDialog('invoice_print.aspx',window,'status:Modeless;edge:raised;unadorned:no;scroll=yes;resizable:yes;center=yes;help:no;dialogwidth:890px;dialogheight:620px');"+"</script>");

}
finally

{
//Response.Write("<script>window.alert('Success invoiced!');</script>");

conn.Close();
//Response.Write("<script>window.close()</script>");
}


}

点击右上角即可分享
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步