using System; using System.Data; using System.Data.Common; using System.Collections.Generic; using System.Text; using DSWeb.Areas.Account.Models.Chfee_Invoiceapplication; using DSWeb.Areas.Account.Models.Chfee_do_detail; using DSWeb.Areas.Account.Models.MsOpBill; using DSWeb.Areas.Account.Models.BillChfeeDetail; using Microsoft.Practices.EnterpriseLibrary.Data; using DSWeb.Areas.Account.Models.Chfee_Exrate; using DSWeb.Areas.Account.Models.Chfee_do_Sum; using DSWeb.Areas.CommMng.Models; using DSWeb.EntityDA; using HcUtility.Comm; using DSWeb.Areas.CommMng.DAL; using DSWeb.Areas.Account.Models.Chfee_Invoice; using DSWeb.Areas.Account.Models.Chfee_Invoice_HangXin; using DSWeb.Areas.Account.Models.ChfeeDetail; using System.IO; using DSWeb.MvcShipping.DAL.MsCodeGoodInv; using DSWeb.MvcShipping.DAL.MsSysParamSet; using DSWeb.Areas.Account.Models.TruckChfee_do_detail; using DSWeb.Areas.Account.DAL.Chfee_Invoiceapplication; using DSWeb.Areas.Account.Models.RytInvoice; using DSWeb.MvcShipping.DAL.MsOpSeaeDAL; using System.Xml; using System.Xml.Serialization; using System.Configuration; using System.Security.Cryptography; using DSWeb.MvcShipping.DAL.MsCompanysDAL; using DSWeb.MvcShipping.DAL.MsCodeGoodInv; using DSWeb.Areas.Dispatch.DB; using System.Linq; using System.Text.RegularExpressions; using HcUtility.Core; namespace DSWeb.Areas.Account.DAL.Chfee_Invoice_HangXin { public partial class ChinvoiceDAL { #region 发票列表 static public List GetDataList(int start, int limit, string strCondition, string userid = "", string usercode = "", string orgcode = "", string sort = null) { var rangstr = GetRangDAListStr("", userid, usercode, orgcode); if (!string.IsNullOrEmpty(rangstr) && !string.IsNullOrWhiteSpace(userid + usercode + orgcode)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } var strSql = new StringBuilder(); strSql.Append(@"SELECT * from (SELECT row_number() over ("); var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { sortstring = sortstring.Replace("NOSTL", "dbo.GetFeeNoStlByInvNo(cm.BILLNO)"); strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by CURRENCY,OPERATETIME DESC"); } strSql.Append(@") as num , "); strSql.Append(" GID,INVOICENO,BILLNO,CUSTOMERNAME,ACTUALCUSTOMERNAME,INVOICECUSTNAME,INVOICEMAKETIME,BANK,ACCOUNT,BSNO,VESSELVOYAGE,ETD,POL,POD"); strSql.Append(" ,FEEITEM,AMOUNT,INVAMOUNT,AMOUNTCAPITAL,OTCURRAMOUNT,CURRENCY,REMARK,APPLYTIME,OPERATOR,LICENSECODE,INVOICETYPE,BILLSTATUS"); strSql.Append(" ,ISNEEDPRINT,ISNEEDFEE,OPERATETIME,MBLNO,EXCHANGERATE,PRINTCAPITAL,PRINTAMOUNT,PRINTTITLE,COMPANYID,VOUCHERNO "); strSql.Append(" ,CUSTRATENO,CUSTADDRTEL,CUSTBANK,INVOICECATEGORY,ISDELETE,DELETEOPERATOR,DELETETIME,RECVCURR "); strSql.Append(",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97008 and EnumValueID=cm.INVOICECATEGORY) as INVOICECATEGORYREF"); strSql.Append(",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97009 and EnumValueID=cm.INVOICETYPE) as INVOICETYPEREF"); strSql.Append(",(case cm.billstatus when 1 then '已锁定' else '未锁定' end) as BILLSTATUSREF"); strSql.Append(",CREATEUSER,(select ShowName from [user] where GID=cm.CREATEUSER) as CREATEUSERREF,CREATETIME"); strSql.Append(",(select ShowName from [user] where GID=cm.OPERATOR) as OPERATORNAME"); strSql.Append(",(select ShowName from [user] where GID=cm.DELETEOPERATOR) as DELOPERATORNAME"); strSql.Append(",(select ShowName from [user] where GID=cm.APPLICANT) as LOCKUSER"); strSql.Append(",dbo.GetFeeNoStlByInvNo(cm.BILLNO) as NOSTL,FEEAMOUNT,VOUNO,DZSTATUS"); strSql.Append(",(select top 1 (select ShowName from [user] where GID=ap.applicant) APPLICANT from ch_fee_invoiceapplication ap where invbillno=cm.BILLNO) APPLICANT"); strSql.Append(",SALECORPID,(select [NAME] from [company] where GID=cm.SALECORPID) as SALECORP"); strSql.Append(",CUSTTEL,CUSTADDR,PTORRED,REDCODE,REDNUM,PUSHMODE,PUSHMOBILE,PUSHEMAIL,INVOICELINE,EINVOICESTATE,INVOICEINFOURL,INVOICEPDFURL,INVOICESERIALNUM,INVOICECODE,ISFRINV"); strSql.Append(",dbo.F_getEnumValue(0,80001,cm.PTORRED) as PTORREDREF"); strSql.Append(",dbo.F_getEnumValue(0,80002,cm.PUSHMODE) as PUSHMODEREF"); strSql.Append(",dbo.F_getEnumValue(0,80003,cm.INVOICELINE) as INVOICELINEREF"); strSql.Append(",dbo.F_getEnumValue(0,80004,cm.EINVOICESTATE) as EINVOICESTATEREF"); strSql.Append(",(select TAXCODE from [company] where gid=cm.SALECORPID) TAXCODE"); strSql.Append(",(select OFFICEPHONE from [company] where gid=cm.SALECORPID) OFFICEPHONE"); strSql.Append(",(select ADDRESS from [company] where gid=cm.SALECORPID) ADDRESS"); strSql.Append(",(select BILLRISES from [company] where gid=cm.SALECORPID) BILLRISES"); strSql.Append(",PAYEE,CHECKER,SETRED,INVITERFACE"); strSql.Append(",buyerManagerName,managerCardType,managerCardNo"); strSql.Append(",redReason,billInfoNo,billUUid"); strSql.Append(" FROM ch_fee_invoice cm where 1=1 "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" and " + strCondition); } strSql.Append(@")as t "); strSql.Append(string.Format("where t.num>{0} and t.num<={1} order by t.num ", start, start + limit)); // return SetData(strSql); } public static int getTotalCount(string strCondition, string userid, string usercode, string companyid) { var rangstr = GetRangDAListStr("", userid, usercode, companyid); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } StringBuilder strSql = new StringBuilder(); strSql.Append("select count(*) "); strSql.Append(" FROM ch_fee_invoice cm where 1=1 "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" and " + strCondition); } int cnt = 0; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { cnt = Convert.ToInt32(reader[0]); } } return cnt; } static public string GetDataListStr(string strCondition, string userid = "", string usercode = "", string orgcode = "", string sort = null) { var rangstr = GetRangDAListStr("", userid, usercode, orgcode); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } var strSql = new StringBuilder(); strSql.Append(" SELECT GID,INVOICENO,BILLNO,CUSTOMERNAME,ACTUALCUSTOMERNAME,INVOICECUSTNAME,INVOICEMAKETIME,BANK,ACCOUNT,BSNO,VESSELVOYAGE,ETD,POL,POD"); strSql.Append(" ,FEEITEM,AMOUNT,INVAMOUNT,AMOUNTCAPITAL,OTCURRAMOUNT,CURRENCY,REMARK,APPLYTIME,OPERATOR,LICENSECODE,INVOICETYPE,BILLSTATUS"); strSql.Append(" ,ISNEEDPRINT,ISNEEDFEE,OPERATETIME,MBLNO,EXCHANGERATE,PRINTCAPITAL,PRINTAMOUNT,PRINTTITLE,COMPANYID,VOUCHERNO "); strSql.Append(" ,CUSTRATENO,CUSTADDRTEL,CUSTBANK,INVOICECATEGORY,ISDELETE,DELETEOPERATOR,DELETETIME,RECVCURR "); strSql.Append(",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97008 and EnumValueID=cm.INVOICECATEGORY) as INVOICECATEGORYREF"); strSql.Append(",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=97009 and EnumValueID=cm.INVOICETYPE) as INVOICETYPEREF"); strSql.Append(",(case cm.billstatus when 1 then '已锁定' else '未锁定' end) as BILLSTATUSREF"); strSql.Append(",(select ShowName from [user] where GID=cm.OPERATOR) as OPERATORNAME"); strSql.Append(",CREATEUSER,(select ShowName from [user] where GID=cm.CREATEUSER) as CREATEUSERREF,CREATETIME"); strSql.Append(",(select ShowName from [user] where GID=cm.DELETEOPERATOR) as DELOPERATORNAME"); strSql.Append(",(select ShowName from [user] where GID=cm.APPLICANT) as LOCKUSER"); strSql.Append(",dbo.GetFeeNoStlByInvNo(cm.BILLNO) as NOSTL,FEEAMOUNT,VOUNO,DZSTATUS"); strSql.Append(",(select top 1 (select ShowName from [user] where GID=ap.applicant) APPLICANT from ch_fee_invoiceapplication ap where invbillno=cm.BILLNO) APPLICANT"); strSql.Append(",SALECORPID,(select [NAME] from [company] where GID=cm.SALECORPID) as SALECORP"); strSql.Append(",CUSTTEL,CUSTADDR,PTORRED,REDCODE,REDNUM,PUSHMODE,PUSHMOBILE,PUSHEMAIL,INVOICELINE,EINVOICESTATE,INVOICEINFOURL,INVOICEPDFURL,INVOICESERIALNUM,INVOICECODE,ISFRINV"); strSql.Append(",dbo.F_getEnumValue(0,80001,cm.PTORRED) as PTORREDREF"); strSql.Append(",dbo.F_getEnumValue(0,80002,cm.PUSHMODE) as PUSHMODEREF"); strSql.Append(",dbo.F_getEnumValue(0,80003,cm.INVOICELINE) as INVOICELINEREF"); strSql.Append(",dbo.F_getEnumValue(0,80004,cm.EINVOICESTATE) as EINVOICESTATEREF"); strSql.Append(",(select TAXCODE from [company] where gid=cm.SALECORPID) TAXCODE"); strSql.Append(",(select OFFICEPHONE from [company] where gid=cm.SALECORPID) OFFICEPHONE"); strSql.Append(",(select ADDRESS from [company] where gid=cm.SALECORPID) ADDRESS"); strSql.Append(",(select BILLRISES from [company] where gid=cm.SALECORPID) BILLRISES"); strSql.Append(",PAYEE,CHECKER,SETRED,INVITERFACE"); strSql.Append(",buyerManagerName,managerCardType,managerCardNo"); strSql.Append(" FROM ch_fee_invoice cm where 1=1 "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" and " + strCondition); } var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by CURRENCY,OPERATETIME DESC"); } return strSql.ToString(); } static public ChInvoice_HangXin GetData(string condition, string userid = "", string usercode = "", string orgcode = "") { var list = GetDataList(0, 1, condition, userid, usercode, orgcode, ""); if (list.Count > 0) return list[0]; return new ChInvoice_HangXin(); } private static List SetData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { ChInvoice_HangXin data = new ChInvoice_HangXin(); #region Set DB data to Object data.GID = Convert.ToString(reader["GID"]); data.BILLNO = Convert.ToString(reader["BILLNO"]); data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]); data.ACTUALCUSTOMERNAME = Convert.ToString(reader["ACTUALCUSTOMERNAME"]); if (reader["CURRENCY"] != DBNull.Value) data.CURRENCY = Convert.ToString(reader["CURRENCY"]); data.INVOICENO = Convert.ToString(reader["INVOICENO"]); data.INVOICECUSTNAME = Convert.ToString(reader["INVOICECUSTNAME"]); data.INVOICECATEGORY = Convert.ToString(reader["INVOICECATEGORY"]); data.INVOICECATEGORYREF = Convert.ToString(reader["INVOICECATEGORYREF"]); if (reader["INVOICETYPE"] != DBNull.Value) data.INVOICETYPE = Convert.ToInt32(reader["INVOICETYPE"]); data.INVOICETYPEREF = Convert.ToString(reader["INVOICETYPEREF"]); if (reader["BILLSTATUS"] != DBNull.Value) data.BILLSTATUS = Convert.ToInt32(reader["BILLSTATUS"]); data.BILLSTATUSREF = Convert.ToString(reader["BILLSTATUSREF"]); data.BSNO = Convert.ToString(reader["BSNO"]); data.MBLNO = Convert.ToString(reader["MBLNO"]); data.VESSELVOYAGE = Convert.ToString(reader["VESSELVOYAGE"]); data.ETD = Convert.ToString(reader["ETD"]); data.POL = Convert.ToString(reader["POL"]); data.POD = Convert.ToString(reader["POD"]); if (reader["AMOUNT"] != DBNull.Value) data.AMOUNT = Convert.ToDecimal(reader["AMOUNT"]); if (reader["INVAMOUNT"] != DBNull.Value) data.INVAMOUNT = Math.Round(Convert.ToDecimal(reader["INVAMOUNT"]), 2, MidpointRounding.AwayFromZero); data.AMOUNTCAPITAL = Convert.ToString(reader["AMOUNTCAPITAL"]); if (reader["OTCURRAMOUNT"] != DBNull.Value) data.OTCURRAMOUNT = Convert.ToDecimal(reader["OTCURRAMOUNT"]); if (reader["EXCHANGERATE"] != DBNull.Value) data.EXCHANGERATE = Convert.ToDecimal(reader["EXCHANGERATE"]); else data.EXCHANGERATE = 0; data.APPLICANT = Convert.ToString(reader["APPLICANT"]); // data.APPLICANTNAME = Convert.ToString(reader["APPLICANTNAME"]); if (reader["APPLYTIME"] != DBNull.Value) data.APPLYTIME = Convert.ToDateTime(reader["APPLYTIME"]); data.LOCKUSER = Convert.ToString(reader["LOCKUSER"]); if (reader["INVOICEMAKETIME"] != DBNull.Value) data.INVOICEMAKETIME = Convert.ToDateTime(reader["INVOICEMAKETIME"]).ToString("yyyy-MM-dd"); data.OPERATOR = Convert.ToString(reader["OPERATOR"]); data.OPERATORNAME = Convert.ToString(reader["OPERATORNAME"]); data.REMARK = Convert.ToString(reader["REMARK"]); data.COMPANYID = Convert.ToString(reader["COMPANYID"]); data.CUSTRATENO = Convert.ToString(reader["CUSTRATENO"]); data.CUSTADDRTEL = Convert.ToString(reader["CUSTADDRTEL"]); data.CUSTBANK = Convert.ToString(reader["CUSTBANK"]); if (reader["ISNEEDPRINT"] != DBNull.Value) data.ISNEEDPRINT = Convert.ToString(reader["ISNEEDPRINT"]); if (reader["ISNEEDFEE"] != DBNull.Value) data.ISNEEDFEE = Convert.ToString(reader["ISNEEDFEE"]); if (reader["ISDELETE"] != DBNull.Value) data.ISDELETE = Convert.ToString(reader["ISDELETE"]); data.DELETEOPERATOR = Convert.ToString(reader["DELETEOPERATOR"]); data.DELOPERATORNAME = Convert.ToString(reader["DELOPERATORNAME"]); if (reader["DELETETIME"] != DBNull.Value) data.DELETETIME = Convert.ToDateTime(reader["DELETETIME"]); data.NOSTL = Convert.ToString(reader["NOSTL"]); data.FEEAMOUNT = Convert.ToString(reader["FEEAMOUNT"]); data.VOUCHERNO = Convert.ToString(reader["VOUCHERNO"]); data.VOUNO = Convert.ToString(reader["VOUNO"]); data.RECVCURR = Convert.ToString(reader["RECVCURR"]); data.SALECORPID = Convert.ToString(reader["SALECORPID"]);//分公司代码 data.SALECORP = Convert.ToString(reader["SALECORP"]);//分公司代码 data.ACCOUNT = Convert.ToString(reader["ACCOUNT"]);//分公司代码 data.BANK = Convert.ToString(reader["BANK"]);//分公司代码 data.DZSTATUS = Convert.ToString(reader["DZSTATUS"]); data.CUSTTEL = Convert.ToString(reader["CUSTTEL"]); data.CUSTADDR = Convert.ToString(reader["CUSTADDR"]); data.PTORRED = Convert.ToString(reader["PTORRED"]); data.REDCODE = Convert.ToString(reader["REDCODE"]); data.REDNUM = Convert.ToString(reader["REDNUM"]); data.PUSHMODE = Convert.ToString(reader["PUSHMODE"]); data.PUSHMOBILE = Convert.ToString(reader["PUSHMOBILE"]); if (string.IsNullOrEmpty(data.PUSHMOBILE)) data.PUSHMOBILE = "0"; data.PUSHEMAIL = Convert.ToString(reader["PUSHEMAIL"]); data.INVOICELINE = Convert.ToString(reader["INVOICELINE"]); data.EINVOICESTATE = Convert.ToString(reader["EINVOICESTATE"]); data.INVOICEINFOURL = Convert.ToString(reader["INVOICEINFOURL"]); data.INVOICEPDFURL = Convert.ToString(reader["INVOICEPDFURL"]); data.INVOICESERIALNUM = Convert.ToString(reader["INVOICESERIALNUM"]); data.INVOICECODE = Convert.ToString(reader["INVOICECODE"]); data.PTORREDREF = Convert.ToString(reader["PTORREDREF"]); data.PUSHMODEREF = Convert.ToString(reader["PUSHMODEREF"]); data.INVOICELINEREF = Convert.ToString(reader["INVOICELINEREF"]); data.EINVOICESTATEREF = Convert.ToString(reader["EINVOICESTATEREF"]); data.TAXCODE = Convert.ToString(reader["TAXCODE"]); data.OFFICEPHONE = Convert.ToString(reader["OFFICEPHONE"]); data.ADDRESS = Convert.ToString(reader["ADDRESS"]); data.BILLRISES = Convert.ToString(reader["BILLRISES"]); data.PAYEE = Convert.ToString(reader["PAYEE"]); data.CHECKER = Convert.ToString(reader["CHECKER"]); data.SETRED = Convert.ToString(reader["SETRED"]); data.INVITERFACE = Convert.ToString(reader["INVITERFACE"]); data.CREATEUSER = Convert.ToString(reader["CREATEUSER"]); data.CREATEUSERREF = Convert.ToString(reader["CREATEUSERREF"]); if (reader["CREATETIME"] != DBNull.Value) data.CREATETIME = Convert.ToDateTime(reader["CREATETIME"]).ToString("yyyy-MM-dd HH:mm:ss"); if (reader["ISFRINV"] != DBNull.Value) data.ISFRINV = Convert.ToBoolean(reader["ISFRINV"]); data.redReason = Convert.ToString(reader["redReason"]); data.billInfoNo = Convert.ToString(reader["billInfoNo"]); data.billUuid = Convert.ToString(reader["billUuid"]); data.buyerManagerName = Convert.ToString(reader["buyerManagerName"]); data.managerCardType = Convert.ToString(reader["managerCardType"]); data.managerCardNo = Convert.ToString(reader["managerCardNo"]); #endregion headList.Add(data); } reader.Close(); } return headList; } #endregion #region 发票明细 static public List GetDetailList(string strCondition) { var strSql = new StringBuilder(); strSql.Append(" SELECT GID,PID,SerialNo,GOODSNAME,SPEC,UNIT "); strSql.Append(",PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE"); strSql.Append(",(Select GOODNAME from code_goods_inv where GID=ch_fee_invoicedetail.GOODSNAME) AS GOODSNAMEREF"); strSql.Append(" FROM ch_fee_invoicedetail "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where " + strCondition); } var result = DetailSetData(strSql); //增加三个税收属性相关的字段 var PIDList = ""; if (result.Count > 0) { foreach (var detail in result) { if (PIDList.IndexOf(detail.PID) > 0) continue; if (PIDList != "") PIDList += "','"; PIDList += detail.PID; } if (PIDList != "") { var CodeGoodInvList = MsCodeGoodInvDAL.GetDataList(" gid in (SELECT GOODSNAME FROM ch_fee_invoicedetail where PID in( '" + PIDList + "' )) "); if (CodeGoodInvList.Count > 0) { foreach (var detail in result) { foreach (var CodeGoodInv in CodeGoodInvList) { if (detail.GOODSNAME == CodeGoodInv.GID) { detail.ISUSEPREF = CodeGoodInv.ISUSEPREF; detail.DEFREMARK = CodeGoodInv.DEFREMARK; detail.ZTAXTYPE = CodeGoodInv.ZTAXTYPE; } } } } } } return result; } static public List GetDetailList(string strCondition, Database db, DbTransaction tran) { var strSql = new StringBuilder(); strSql.Append(" SELECT GID,PID,SerialNo,GOODSNAME,SPEC,UNIT "); strSql.Append(",PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE"); strSql.Append(",(Select GOODNAME from code_goods_inv where GID=ch_fee_invoicedetail.GOODSNAME) AS GOODSNAMEREF"); strSql.Append(" FROM ch_fee_invoicedetail "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where " + strCondition); } return DetailSetData(strSql, db, tran); } static public ChInvoiceDetail GetDetailData(string condition) { var list = GetDetailList(condition); if (list.Count > 0) return list[0]; return new ChInvoiceDetail(); } private static List DetailSetData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { ChInvoiceDetail data = new ChInvoiceDetail(); #region Set DB data to Object data.GID = Convert.ToString(reader["GID"]); data.PID = Convert.ToString(reader["PID"]); data.SERIALNO = Convert.ToInt16(reader["SerialNo"]); data.GOODSNAME = Convert.ToString(reader["GOODSNAME"]); data.GOODSNAMEREF = Convert.ToString(reader["GOODSNAMEREF"]); if (data.GOODSNAMEREF == "" || data.GOODSNAMEREF == null) data.GOODSNAMEREF = data.GOODSNAME; data.SPEC = Convert.ToString(reader["SPEC"]); data.UNIT = Convert.ToString(reader["UNIT"]); data.PKGS = Convert.ToDecimal(reader["PKGS"]); data.TAXPRICE = Convert.ToDecimal(reader["TAXPRICE"]); data.PRICE = Convert.ToDecimal(reader["PRICE"]); data.AMOUNT = Math.Round(Convert.ToDecimal(reader["AMOUNT"]), 2, MidpointRounding.AwayFromZero); data.TAXRATE = Convert.ToDecimal(reader["TAXRATE"]); data.TAX = Convert.ToDecimal(reader["TAX"]); data.REMARK = Convert.ToString(reader["Remark"]); data.GOODCODE = Convert.ToString(reader["GOODCODE"]); #endregion headList.Add(data); } reader.Close(); } return headList; } private static List DetailSetData(StringBuilder strSql, Database db, DbTransaction tran) { var headList = new List(); using (IDataReader reader = db.ExecuteReader(tran, CommandType.Text, strSql.ToString())) { while (reader.Read()) { ChInvoiceDetail data = new ChInvoiceDetail(); #region Set DB data to Object data.GID = Convert.ToString(reader["GID"]); data.PID = Convert.ToString(reader["PID"]); data.SERIALNO = Convert.ToInt16(reader["SerialNo"]); data.GOODSNAME = Convert.ToString(reader["GOODSNAME"]); data.GOODSNAMEREF = Convert.ToString(reader["GOODSNAMEREF"]); if (data.GOODSNAMEREF == "" || data.GOODSNAMEREF == null) data.GOODSNAMEREF = data.GOODSNAME; data.SPEC = Convert.ToString(reader["SPEC"]); data.UNIT = Convert.ToString(reader["UNIT"]); data.PKGS = Convert.ToDecimal(reader["PKGS"]); data.TAXPRICE = Convert.ToDecimal(reader["TAXPRICE"]); data.PRICE = Convert.ToDecimal(reader["PRICE"]); data.AMOUNT = Convert.ToDecimal(reader["AMOUNT"]); data.TAXRATE = Convert.ToDecimal(reader["TAXRATE"]); data.TAX = Convert.ToDecimal(reader["TAX"]); data.REMARK = Convert.ToString(reader["Remark"]); data.GOODCODE = Convert.ToString(reader["GOODCODE"]); #endregion headList.Add(data); } reader.Close(); } return headList; } public static List GetInvoiceNo(string companyid, string userid) { var strSql = new StringBuilder(); strSql.Append("select b.INVOICECODE+i.INVOICENUM INVOICENUM from ch_fee_invoiceitems i left join ch_fee_invoicebooks b on (i.BOOKID=b.GID)"); strSql.Append(" where b.COMPANYID='" + companyid + "' and (b.DEFUSER='" + userid + "' or isnull(DEFUSER,'')='' ) and (i.isdelete=0 or i.isdelete is null) and i.ismakeout=0 AND ISNULL(i.ISLOCK,0)=0 AND ISNULL(B.ISLOCK,0)=0 and (b.isdelete=0 or b.isdelete is null)"); strSql.Append(" order by i.INVOICENUM "); Database db = DatabaseFactory.CreateDatabase(); var evList = new List(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { var evData = new ChInvoiceNo(); evData.INVNO = Convert.ToString(reader["INVOICENUM"]); evList.Add(evData); } reader.Close(); } return evList; } #endregion #region 发票费用明细 static public List GetBodyList(string strCondition, string sort = "") { var strSql = new StringBuilder(); strSql.Append(" SELECT c.GID,c.BSNO,c.FEEID,c.FEENAME,c.CURRENCY,c.AMOUNT,c.DOAMOUNT,c.ORIGCURRENCY,c.ORIGAMOUNT,ISNULL(c.ORIGSTLAMOUNT,0) AS ORIGSTLAMOUNT,c.EXCHANGERATE "); strSql.Append(",c.FEETYPE,c.CUSTOMERNAME as FEEOBJNAME,(CASE C.FEETYPE WHEN 1 THEN '收' ELSE '付' END) AS FEETYPEREF,(SELECT EXCHANGERATE from ch_fee where GID=c.FEEID) ORIGEXCHANGERATE"); strSql.Append(" ,b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO,b.ORDERNO"); strSql.Append(",b.CUSTOMERNAME"); strSql.Append(",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD"); strSql.Append(",b.PORTDISCHARGE,b.DESTINATION,b.INPUTBY,b.OP,b.CUSTSERVICE"); strSql.Append(",b.DOC,b.SALE,b.INVNO"); strSql.Append(",f.Remark Remark,f.INPUTMODE "); strSql.Append(" FROM ch_fee_do c"); strSql.Append(" left join v_op_bill b on (b.bsno=c.bsno)"); strSql.Append(" left join ch_fee f on (f.gid=c.feeid) "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where (c.ISDELETED=0 or c.ISDELETED IS NULL) and " + strCondition); } var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by c.CREATETIME,b.ETD,b.MBLNO "); } return BodySetData(strSql); } static public List GetBsList(string strCondition) { var strSql = new StringBuilder(); strSql.Append(" SELECT '' GID,'' BSNO,'' FEEID,'' FEENAME,'' CURRENCY,sum(ISNULL((case when c.ORIGCURRENCY='RMB' THEN case when c.FEETYPE=1 THEN ORIGAMOUNT ELSE -ORIGAMOUNT END ELSE 0 END),0)) AMOUNT,0 DOAMOUNT"); strSql.Append(",'' ORIGCURRENCY,sum(ISNULL((case when c.ORIGCURRENCY!='RMB' THEN case when c.FEETYPE=1 THEN ORIGAMOUNT ELSE -ORIGAMOUNT END ELSE 0 END),0)) ORIGAMOUNT,0 ORIGSTLAMOUNT,0 EXCHANGERATE,0 ORIGEXCHANGERATE "); strSql.Append(",1 FEETYPE,'' FEEOBJNAME,'收' AS FEETYPEREF"); strSql.Append(" ,b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO,b.ORDERNO"); strSql.Append(",b.CUSTOMERNAME"); strSql.Append(",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD"); strSql.Append(",b.PORTDISCHARGE,b.DESTINATION,b.INPUTBY,b.OP,b.CUSTSERVICE"); strSql.Append(",b.DOC,b.SALE,b.INVNO"); strSql.Append(",'' Remark,'' INPUTMODE "); strSql.Append(" FROM ch_fee_do c"); strSql.Append(" left join v_op_bill b on (b.bsno=c.bsno)"); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where (c.ISDELETED=0 or c.ISDELETED IS NULL) and " + strCondition); } strSql.Append(" GROUP BY b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO,b.ORDERNO"); strSql.Append(",b.CUSTOMERNAME"); strSql.Append(",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD"); strSql.Append(",b.PORTDISCHARGE,b.DESTINATION,b.INPUTBY,b.OP,b.CUSTSERVICE"); strSql.Append(",b.DOC,b.SALE,b.INVNO"); return BodySetData(strSql); } private static List BodySetData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { Chfee_do_detail data = new Chfee_do_detail(); #region Set DB data to Object data.BSNO = Convert.ToString(reader["BSNO"]); data.FEEDOID = Convert.ToString(reader["GID"]); data.FEEID = Convert.ToString(reader["FEEID"]); data.FEENAME = Convert.ToString(reader["FEENAME"]); data.FEEOBJNAME = Convert.ToString(reader["FEEOBJNAME"]); data.FEETYPE = Convert.ToInt16(reader["FEETYPE"]); data.FEETYPEREF = Convert.ToString(reader["FEETYPEREF"]); data.CURRENCY = Convert.ToString(reader["CURRENCY"]); if (reader["AMOUNT"] != DBNull.Value) data.AMOUNT = Convert.ToDecimal(reader["AMOUNT"]); if (reader["DOAMOUNT"] != DBNull.Value) data.DOAMOUNT = Convert.ToDecimal(reader["DOAMOUNT"]); data.ORIGCURRENCY = Convert.ToString(reader["ORIGCURRENCY"]); if (reader["ORIGAMOUNT"] != DBNull.Value) data.ORIGAMOUNT = Convert.ToDecimal(reader["ORIGAMOUNT"]); if (reader["ORIGSTLAMOUNT"] != DBNull.Value) data.ORIGSTLAMOUNT = Convert.ToDecimal(reader["ORIGSTLAMOUNT"]); if (reader["EXCHANGERATE"] != DBNull.Value) data.EXCHANGERATE = Convert.ToDecimal(reader["EXCHANGERATE"]); if (reader["ETD"] != DBNull.Value) data.ETD = Convert.ToString(reader["ETD"]); data.ACCDATE = Convert.ToString(reader["ACCDATE"]); data.OPLBNAME = Convert.ToString(reader["OPLBNAME"]); data.MBLNO = Convert.ToString(reader["MBLNO"]); data.HBLNO = Convert.ToString(reader["HBLNO"]); data.CUSTNO = Convert.ToString(reader["CUSTNO"]); data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]); data.VESSEL = Convert.ToString(reader["VESSEL"]); data.VOYNO = Convert.ToString(reader["VOYNO"]); data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]); data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]); data.DESTINATION = Convert.ToString(reader["DESTINATION"]); data.INPUTBY = Convert.ToString(reader["INPUTBY"]); data.OP = Convert.ToString(reader["OP"]); data.CUSTSERVICE = Convert.ToString(reader["CUSTSERVICE"]); data.DOC = Convert.ToString(reader["DOC"]); data.SALE = Convert.ToString(reader["SALE"]); if (reader["BSSTATUS"] != DBNull.Value) data.BSSTATUS = Convert.ToBoolean(reader["BSSTATUS"]); if (reader["ORIGEXCHANGERATE"] != DBNull.Value) data.ORIGEXCHANGERATE = Convert.ToDecimal(reader["ORIGEXCHANGERATE"]); data.Remark = Convert.ToString(reader["Remark"]); data.INPUTMODE = Convert.ToString(reader["INPUTMODE"]); data.ORDERNO = Convert.ToString(reader["ORDERNO"]); data.INVNO = Convert.ToString(reader["INVNO"]); #endregion headList.Add(data); } reader.Close(); } return headList; } static public List GetTruckBodyList(string strCondition, string sort = "") { var strSql = new StringBuilder(); strSql.Append(" SELECT c.GID,c.BSNO,c.FEEID,c.FEENAME,c.CURRENCY,c.AMOUNT,c.DOAMOUNT,c.ORIGCURRENCY,c.ORIGAMOUNT,ISNULL(c.ORIGSTLAMOUNT,0) AS ORIGSTLAMOUNT,c.EXCHANGERATE "); strSql.Append(",c.FEETYPE,c.CUSTOMERNAME as FEEOBJNAME,(CASE C.FEETYPE WHEN 1 THEN '收' ELSE '付' END) AS FEETYPEREF,(SELECT EXCHANGERATE from ch_fee where GID=c.FEEID) ORIGEXCHANGERATE"); strSql.Append(" ,B.BSNO,B.TRANSTYPE,B.TRANSSTATUS,B.CUSTOMERNAME,B.CUSTNO,B.CONTRACTNO,B.ORDERNO,B.BSDATE,"); strSql.Append("B.ETD,B.ETA,B.OP,B.SALE,B.CUSTSERVICE,B.CUSTATTN,B.CUSTTEL,B.CONSIGNEENAME,B.CONSIGNEEATTN,B.CONSIGNEETEL,B.CONSIGNEEADDR,"); strSql.Append("B.PORTLOAD,B.PORTDISCHARGE,B.GOODSNAME,B.KGS,B.NETWEIGHT,B.CBM,B.PKGS,B.KINDPKGS,B.TRUCKER,B.TRUCKNO"); strSql.Append(",f.Remark Remark,f.INPUTMODE,C.CREATETIME "); strSql.Append(" FROM ch_fee_do c"); strSql.Append(" left join v_op_truck_bulk b on (b.bsno=c.bsno)"); strSql.Append(" left join ch_fee f on (f.gid=c.feeid) "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where (c.ISDELETED=0 or c.ISDELETED IS NULL) and " + strCondition); } var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by c.CREATETIME,b.ETD,b.MBLNO "); } return BodyTruckSetData(strSql); } private static List BodyTruckSetData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { TruckChfee_do_detail data = new TruckChfee_do_detail(); #region Set DB data to Object data.BSNO = Convert.ToString(reader["BSNO"]); data.FEEDOID = Convert.ToString(reader["GID"]); data.FEEID = Convert.ToString(reader["FEEID"]); data.FEENAME = Convert.ToString(reader["FEENAME"]); data.FEEOBJNAME = Convert.ToString(reader["FEEOBJNAME"]); data.FEETYPE = Convert.ToInt16(reader["FEETYPE"]); data.FEETYPEREF = Convert.ToString(reader["FEETYPEREF"]); data.CURRENCY = Convert.ToString(reader["CURRENCY"]); data.AMOUNT = Convert.ToDecimal(reader["AMOUNT"]); data.DOAMOUNT = Convert.ToDecimal(reader["DOAMOUNT"]); data.ORIGCURRENCY = Convert.ToString(reader["ORIGCURRENCY"]); data.ORIGAMOUNT = Convert.ToDecimal(reader["ORIGAMOUNT"]); data.ORIGSTLAMOUNT = Convert.ToDecimal(reader["ORIGSTLAMOUNT"]); data.EXCHANGERATE = Convert.ToDecimal(reader["EXCHANGERATE"]); if (reader["ETD"] != DBNull.Value) data.ETD = Convert.ToString(reader["ETD"]); data.ORDERNO = Convert.ToString(reader["ORDERNO"]); data.CONTRACTNO = Convert.ToString(reader["CONTRACTNO"]); data.CUSTATTN = Convert.ToString(reader["CUSTATTN"]); data.MBLNO = Convert.ToString(reader["MBLNO"]); data.CUSTTEL = Convert.ToString(reader["CUSTTEL"]); data.CUSTNO = Convert.ToString(reader["CUSTNO"]); data.CONSIGNEENAME = Convert.ToString(reader["CONSIGNEENAME"]); data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]); data.CONSIGNEEATTN = Convert.ToString(reader["CONSIGNEEATTN"]); data.CONSIGNEETEL = Convert.ToString(reader["CONSIGNEETEL"]); data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]); data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]); data.CONSIGNEEADDR = Convert.ToString(reader["CONSIGNEEADDR"]); data.OP = Convert.ToString(reader["OP"]); data.CUSTSERVICE = Convert.ToString(reader["CUSTSERVICE"]); data.SALE = Convert.ToString(reader["SALE"]); if (reader["ORIGEXCHANGERATE"] != DBNull.Value) data.ORIGEXCHANGERATE = Convert.ToDecimal(reader["ORIGEXCHANGERATE"]); data.REMARK = Convert.ToString(reader["REMARK"]); data.CNTRTOTAL = Convert.ToString(reader["CNTRTOTAL"]); data.GOODSNAME = Convert.ToString(reader["GOODSNAME"]); data.TRUCKER = Convert.ToString(reader["TRUCKER"]); data.TRUCKNO = Convert.ToString(reader["TRUCKNO"]); if (reader["PKGS"] != DBNull.Value) data.PKGS = Convert.ToInt32(reader["PKGS"]); if (reader["KGS"] != DBNull.Value) data.KGS = Convert.ToDecimal(reader["KGS"]); if (reader["CBM"] != DBNull.Value) data.CBM = Convert.ToDecimal(reader["CBM"]); #endregion headList.Add(data); } reader.Close(); } return headList; } #endregion #region 明细金额币别合计 static public List GetBodySumList(string strCondition) { var strSql = new StringBuilder(); strSql.Append(" SELECT c.FEETYPE,(CASE C.FEETYPE WHEN 1 THEN '收' ELSE '付' END) AS FEETYPEREF,c.ORIGCURRENCY CURRENCY,Sum(c.ORIGAMOUNT) AMOUNT "); strSql.Append(" FROM ch_fee_do c"); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where (c.ISDELETED=0 or c.ISDELETED IS NULL) and " + strCondition); } strSql.Append(" Group by c.FEETYPE,c.ORIGCURRENCY"); return BodySumSetData(strSql); } private static List BodySumSetData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { Chfee_do_Sum data = new Chfee_do_Sum(); #region Set DB data to Object data.FEETYPE = Convert.ToInt16(reader["FEETYPE"]); data.FEETYPEREF = Convert.ToString(reader["FEETYPEREF"]); data.CURRENCY = Convert.ToString(reader["CURRENCY"]); if (reader["AMOUNT"] != DBNull.Value) data.AMOUNT = Convert.ToDecimal(reader["AMOUNT"]); #endregion headList.Add(data); } reader.Close(); } return headList; } #endregion #region Inquery FeeDataList static public List GetFeeDataList(string strCondition, string userid, string usercode, string orgcode, string sort) { var rangstr = GetRangDAStr("index", userid, usercode, orgcode); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append("b.BSNO,b.OPLB,b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO"); strSql.Append(",b.CUSTOMERNAME"); strSql.Append(",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD"); strSql.Append(",b.PORTDISCHARGE,b.INPUTBY,b.OP,b.CUSTSERVICE"); strSql.Append(",b.DOC,b.SALE"); strSql.Append(",f.GID AS CH_ID,f.FeeType"); strSql.Append(",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99020 and EnumValueID=f.FeeType) as FeeType_Ref"); strSql.Append(",f.feeName,f.customerName as FeeObjName,f.amount,f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) as balamount,f.currency,f.exChangerate,f.AccTaxRate"); strSql.Append(" from ch_fee f "); strSql.Append(" left join v_op_bill b on (b.bsno=f.bsno)"); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where " + strCondition); } var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by b.BsNo"); } return SetFeeData(strSql); } private static List SetFeeData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { BillChfeeDetail data = new BillChfeeDetail(); #region Set DB data to Object data.BSNO = Convert.ToString(reader["BSNO"]); if (reader["ETD"] != DBNull.Value) data.ETD = Convert.ToString(reader["ETD"]); data.ACCDATE = Convert.ToString(reader["ACCDATE"]); data.OPLB = Convert.ToString(reader["OPLB"]); data.OPLBNAME = Convert.ToString(reader["OPLBNAME"]); data.MBLNO = Convert.ToString(reader["MBLNO"]); data.HBLNO = Convert.ToString(reader["HBLNO"]); data.CUSTNO = Convert.ToString(reader["CUSTNO"]); data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]); data.VESSEL = Convert.ToString(reader["VESSEL"]); data.VOYNO = Convert.ToString(reader["VOYNO"]); data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]); data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]); data.INPUTBY = Convert.ToString(reader["INPUTBY"]); data.OP = Convert.ToString(reader["OP"]); data.CUSTSERVICE = Convert.ToString(reader["CUSTSERVICE"]); data.DOC = Convert.ToString(reader["DOC"]); data.SALE = Convert.ToString(reader["SALE"]); if (reader["BSSTATUS"] != DBNull.Value) data.BSSTATUS = Convert.ToBoolean(reader["BSSTATUS"]); data.CH_ID = Convert.ToString(reader["CH_ID"]); data.FeeType = Convert.ToInt16(reader["FeeType"]); data.FeeType_Ref = Convert.ToString(reader["FeeType_Ref"]); data.FeeName = Convert.ToString(reader["feeName"]); data.FeeObjName = Convert.ToString(reader["FeeObjName"]); data.Amount = Convert.ToDecimal(reader["Amount"]); if (reader["BalAmount"] != DBNull.Value) data.BalAmount = Convert.ToDecimal(reader["BalAmount"]); if (reader["BalAmount"] != DBNull.Value) data.StlAmount = Convert.ToDecimal(reader["BalAmount"]); data.Currency = Convert.ToString(reader["Currency"]); if (reader["exChangerate"] != DBNull.Value) data.ExChangerate = Convert.ToDecimal(reader["exChangerate"]); if (reader["AccTaxRate"] != DBNull.Value) data.AccTaxRate = Convert.ToDecimal(reader["AccTaxRate"]); #endregion headList.Add(data); } reader.Close(); } return headList; } #endregion #region 添加列表 static public List GetAddBillList(int start, int limit, string strCondition, string userid, string usercode, string orgcode, string sort) { var rangstr = GetRangDAStr("index", userid, usercode, orgcode); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } var PAYUSEFEERANGE = MsSysParamSetDAL.GetData("PARAMNAME='INVFEERANGE'"); if (PAYUSEFEERANGE.PARAMVALUE == "1") { var rangstrfee = GetRangAddFeeDAStr(userid, usercode, orgcode); if (!string.IsNullOrEmpty(rangstrfee)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstrfee; } else { strCondition = rangstrfee; } } } var strSql = new StringBuilder(); strSql.Append(@"SELECT * from (SELECT row_number() over ("); var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { sortstring = sortstring.Replace("FEEOBJNAME", "F.CUSTOMERNAME"); strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by b.BsNo"); } strSql.Append(@") as num , "); strSql.Append("b.BSNO,b.OPLB,b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO"); strSql.Append(",b.CUSTOMERNAME"); strSql.Append(",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD"); strSql.Append(",b.PORTDISCHARGE,b.INPUTBY,b.OP,b.CUSTSERVICE"); strSql.Append(",b.DOC,b.SALE,b.ENTERP,b.CUSTOMNO,b.REMARK,b.SALECORPID,(SELECT [NAME] from [COMPANY] WHERE GID=b.SALECORPID) SALECORP"); strSql.Append(",F.CUSTOMERNAME AS CUSTNAME "); strSql.Append(",isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT,0) ELSE 0 END) ELSE 0 END),0) AS RMBDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT,0) ELSE 0 END) ELSE 0 END),0) AS RMBCR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END) ELSE 0 END),0) AS BALRMBDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALRMBCR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT,0) ELSE 0 END)ELSE 0 END),0) AS USDDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT,0) ELSE 0 END)ELSE 0 END),0) AS USDCR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDCR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE ISNULL(AMOUNT,0) END) END)ELSE 0 END),0) AS OTDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE ISNULL(AMOUNT,0) END) END)ELSE 0 END),0) AS OTCR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTCR"); strSql.Append(" FROM CH_FEE f "); strSql.Append(" INNER JOIN V_OP_BILL B ON (F.BSNO=B.BSNO) "); strSql.Append(" where f.ISINVOICE<>1 and ISNULL(f.INVLINKGID,'')='' "); var InvAppFeeStatus = MsSysParamSetDAL.GetData("PARAMNAME='InvAppFeeStatus'"); if (InvAppFeeStatus.PARAMVALUE != "2") strSql.Append(" and f.FEESTATUS IN (0,8,9) "); else strSql.Append(" and f.FEESTATUS IN (2,0,8,9) "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" AND " + strCondition); } var INVISNOTSTL = MsSysParamSetDAL.GetData("PARAMNAME='INVISNOTSTL'"); if (INVISNOTSTL.PARAMVALUE == "1") { strSql.Append(" and ISNULL(f.AMOUNT,0)<>ISNULL(f.SETTLEMENT,0) "); } var INVISNOTRECPAY = MsSysParamSetDAL.GetData("PARAMNAME='INVISNOTRECPAY'"); if (INVISNOTRECPAY.PARAMVALUE == "1") { strSql.Append(" and ISNULL(f.AMOUNT,0)<>ISNULL(f.ORDERAMOUNT,0) "); } strSql.Append("GROUP BY b.BSNO,b.OPLB,b.OPLBNAME,b.BSSTATUS,b.ACCDATE,b.MBLNO,b.HBLNO,b.CUSTNO"); strSql.Append(",b.CUSTOMERNAME"); strSql.Append(",b.VESSEL,b.VOYNO,b.ETD,b.PORTLOAD"); strSql.Append(",b.PORTDISCHARGE,b.INPUTBY,b.OP,b.CUSTSERVICE"); strSql.Append(",b.DOC,b.SALE,b.ENTERP,b.CUSTOMNO,b.REMARK,b.SALECORPID,f.CUSTOMERNAME"); strSql.Append(@")as t "); strSql.Append(string.Format("where t.num>{0} and t.num<={1} ", start, start + limit)); // return SetAddBillData(strSql); } public static int getAddBillTotalCount(string strCondition, string userid, string usercode, string companyid) { var rangstr = GetRangDAStr("index", userid, usercode, companyid); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } var PAYUSEFEERANGE = MsSysParamSetDAL.GetData("PARAMNAME='INVFEERANGE'"); if (PAYUSEFEERANGE.PARAMVALUE == "1") { var rangstrfee = GetRangAddFeeDAStr(userid, usercode, companyid); if (!string.IsNullOrEmpty(rangstrfee)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstrfee; } else { strCondition = rangstrfee; } } } StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT COUNT(*) FROM (select b.BSNO,f.CUSTOMERNAME "); strSql.Append(" FROM CH_FEE f "); strSql.Append(" INNER JOIN V_OP_BILL B ON (F.BSNO=B.BSNO) "); strSql.Append(" where f.ISINVOICE<>1 and ISNULL(f.INVLINKGID,'')='' "); var InvAppFeeStatus = MsSysParamSetDAL.GetData("PARAMNAME='InvAppFeeStatus'"); if (InvAppFeeStatus.PARAMVALUE != "2") strSql.Append(" and f.FEESTATUS IN (0,8,9) "); else strSql.Append(" and f.FEESTATUS IN (2,0,8,9) "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" and " + strCondition); } var INVISNOTSTL = MsSysParamSetDAL.GetData("PARAMNAME='INVISNOTSTL'"); if (INVISNOTSTL.PARAMVALUE == "1") { strSql.Append(" and ISNULL(f.AMOUNT,0)<>ISNULL(f.SETTLEMENT,0) "); } var INVISNOTRECPAY = MsSysParamSetDAL.GetData("PARAMNAME='INVISNOTRECPAY'"); if (INVISNOTRECPAY.PARAMVALUE == "1") { strSql.Append(" and ISNULL(f.AMOUNT,0)<>ISNULL(f.ORDERAMOUNT,0) "); } strSql.Append("GROUP BY b.BSNO,f.CUSTOMERNAME) AS T "); int cnt = 0; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { cnt = Convert.ToInt32(reader[0]); } } return cnt; } private static List SetAddBillData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { BillCustDetail data = new BillCustDetail(); #region Set DB data to Object data.BSNO = Convert.ToString(reader["BSNO"]); if (reader["ETD"] != DBNull.Value) data.ETD = Convert.ToString(reader["ETD"]); data.ACCDATE = Convert.ToString(reader["ACCDATE"]); data.OPLB = Convert.ToString(reader["OPLB"]); data.OPLBNAME = Convert.ToString(reader["OPLBNAME"]); data.MBLNO = Convert.ToString(reader["MBLNO"]); data.HBLNO = Convert.ToString(reader["HBLNO"]); data.CUSTNO = Convert.ToString(reader["CUSTNO"]); data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]); data.VESSEL = Convert.ToString(reader["VESSEL"]); data.VOYNO = Convert.ToString(reader["VOYNO"]); data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]); data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]); data.INPUTBY = Convert.ToString(reader["INPUTBY"]); data.OP = Convert.ToString(reader["OP"]); data.CUSTSERVICE = Convert.ToString(reader["CUSTSERVICE"]); data.DOC = Convert.ToString(reader["DOC"]); data.SALE = Convert.ToString(reader["SALE"]); data.REMARK = Convert.ToString(reader["REMARK"]); data.SALECORPID = Convert.ToString(reader["SALECORPID"]); data.SALECORP = Convert.ToString(reader["SALECORP"]); if (reader["BSSTATUS"] != DBNull.Value) data.BSSTATUS = Convert.ToBoolean(reader["BSSTATUS"]); data.FEEOBJNAME = Convert.ToString(reader["CUSTNAME"]); if (reader["RMBDR"] != DBNull.Value) data.RMBDrAmount = Convert.ToDecimal(reader["RMBDR"]); if (reader["BALRMBDR"] != DBNull.Value) data.RMBDrBalAmount = Convert.ToDecimal(reader["BALRMBDR"]) - Convert.ToDecimal(reader["BALRMBCR"]); if (reader["BALRMBDR"] != DBNull.Value) data.RMBDrDoAmount = Convert.ToDecimal(reader["BALRMBDR"]) - Convert.ToDecimal(reader["BALRMBCR"]); if (reader["RMBCR"] != DBNull.Value) data.RMBCrAmount = Convert.ToDecimal(reader["RMBCR"]); if (reader["BALRMBCR"] != DBNull.Value) data.RMBCrBalAmount = Convert.ToDecimal(reader["BALRMBCR"]); if (reader["BALRMBCR"] != DBNull.Value) data.RMBCrDoAmount = Convert.ToDecimal(reader["BALRMBCR"]); if (reader["USDDR"] != DBNull.Value) data.USDDrAmount = Convert.ToDecimal(reader["USDDR"]); if (reader["BALUSDDR"] != DBNull.Value) data.USDDrBalAmount = Convert.ToDecimal(reader["BALUSDDR"]) - Convert.ToDecimal(reader["BALUSDCR"]); if (reader["BALUSDDR"] != DBNull.Value) data.USDDrDoAmount = Convert.ToDecimal(reader["BALUSDDR"]) - Convert.ToDecimal(reader["BALUSDCR"]); if (reader["USDCR"] != DBNull.Value) data.USDCrAmount = Convert.ToDecimal(reader["USDCR"]); if (reader["BALUSDCR"] != DBNull.Value) data.USDCrBalAmount = Convert.ToDecimal(reader["BALUSDCR"]); if (reader["BALUSDCR"] != DBNull.Value) data.USDCrDoAmount = Convert.ToDecimal(reader["BALUSDCR"]); if (reader["OTDR"] != DBNull.Value) data.OTDrAmount = Convert.ToDecimal(reader["OTDR"]); if (reader["BALOTDR"] != DBNull.Value) data.OTDrBalAmount = Convert.ToDecimal(reader["BALOTDR"]) - Convert.ToDecimal(reader["BALOTCR"]); if (reader["BALOTDR"] != DBNull.Value) data.OTDrDoAmount = Convert.ToDecimal(reader["BALOTDR"]) - Convert.ToDecimal(reader["BALOTCR"]); if (reader["OTCR"] != DBNull.Value) data.OTCrAmount = Convert.ToDecimal(reader["OTCR"]); if (reader["BALOTCR"] != DBNull.Value) data.OTCrBalAmount = Convert.ToDecimal(reader["BALOTCR"]); if (reader["BALOTCR"] != DBNull.Value) data.OTCrDoAmount = Convert.ToDecimal(reader["BALOTCR"]); #endregion headList.Add(data); } reader.Close(); } return headList; } static public List GetAddTruckBillList(int start, int limit, string strCondition, string userid, string usercode, string orgcode, string sort) { var rangstr = GetRangDAStr("index", userid, usercode, orgcode); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } var strSql = new StringBuilder(); strSql.Append(@"SELECT * from (SELECT row_number() over ("); var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { sortstring = sortstring.Replace("FEEOBJNAME", "F.CUSTOMERNAME"); strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by b.BsNo"); } strSql.Append(@") as num , "); strSql.Append("b.BSNO,b.TRANSTYPE,b.TRANSSTATUS,b.CUSTOMERNAME,b.CUSTNO,b.CONTRACTNO,b.ORDERNO,b.BSDATE,"); strSql.Append("b.ETD,b.ETA,b.OP,b.SALE,b.CUSTSERVICE,b.CUSTATTN,b.CUSTTEL,b.CONSIGNEENAME,b.CONSIGNEEATTN,b.CONSIGNEETEL,b.CONSIGNEEADDR,"); strSql.Append("b.PORTLOAD,b.PORTDISCHARGE,b.GOODSNAME,b.KGS,b.NETWEIGHT,b.CBM,b.PKGS,b.KINDPKGS,b.TRUCKER,b.TRUCKNO,b.MBLNO"); strSql.Append(",F.CUSTOMERNAME AS CUSTNAME "); strSql.Append(",isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT,0) ELSE 0 END) ELSE 0 END),0) AS RMBDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT,0) ELSE 0 END) ELSE 0 END),0) AS RMBCR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END) ELSE 0 END),0) AS BALRMBDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALRMBCR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT,0) ELSE 0 END)ELSE 0 END),0) AS USDDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT,0) ELSE 0 END)ELSE 0 END),0) AS USDCR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS BALUSDCR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE ISNULL(AMOUNT,0) END) END)ELSE 0 END),0) AS OTDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE ISNULL(AMOUNT,0) END) END)ELSE 0 END),0) AS OTCR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTDR,"); strSql.Append("isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN 0 ELSE (CASE CURRENCY WHEN 'RMB' THEN 0 ELSE f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) END) END) ELSE 0 END),0) AS BALOTCR"); strSql.Append(" FROM CH_FEE f "); strSql.Append(" INNER JOIN v_op_truck_bulk B ON (F.BSNO=B.BSNO) "); strSql.Append(" where f.ISINVOICE<>1 "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" AND " + strCondition); } var INVISNOTSTL = MsSysParamSetDAL.GetData("PARAMNAME='INVISNOTSTL'"); if (INVISNOTSTL.PARAMVALUE == "1") { strSql.Append(" and ISNULL(f.AMOUNT,0)<>ISNULL(f.SETTLEMENT,0) "); } var INVISNOTRECPAY = MsSysParamSetDAL.GetData("PARAMNAME='INVISNOTRECPAY'"); if (INVISNOTRECPAY.PARAMVALUE == "1") { strSql.Append(" and ISNULL(f.AMOUNT,0)<>ISNULL(f.ORDERAMOUNT,0) "); } strSql.Append("GROUP BY b.BSNO,b.TRANSTYPE,b.TRANSSTATUS,b.CUSTOMERNAME,b.CUSTNO,b.CONTRACTNO,b.ORDERNO,b.BSDATE,"); strSql.Append("b.ETD,b.ETA,b.OP,b.SALE,b.CUSTSERVICE,b.CUSTATTN,b.CUSTTEL,b.CONSIGNEENAME,b.CONSIGNEEATTN,b.CONSIGNEETEL,b.CONSIGNEEADDR,"); strSql.Append("b.PORTLOAD,b.PORTDISCHARGE,b.GOODSNAME,b.KGS,b.NETWEIGHT,b.CBM,b.PKGS,b.KINDPKGS,b.TRUCKER,b.TRUCKNO,b.MBLNO,f.CUSTOMERNAME"); strSql.Append(@")as t "); strSql.Append(string.Format("where t.num>{0} and t.num<={1} ", start, start + limit)); // return SetAddTruckBillData(strSql); } public static int getAddTruckBillTotalCount(string strCondition, string userid, string usercode, string companyid) { var rangstr = GetRangDAStr("index", userid, usercode, companyid); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT COUNT(*) FROM (select b.BSNO,f.CUSTOMERNAME "); strSql.Append(" FROM CH_FEE f "); strSql.Append(" INNER JOIN v_op_truck_bulk B ON (F.BSNO=B.BSNO) "); strSql.Append(" where f.ISINVOICE<>1 "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" and " + strCondition); } strSql.Append("GROUP BY b.BSNO,f.CUSTOMERNAME) AS T "); int cnt = 0; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { cnt = Convert.ToInt32(reader[0]); } } return cnt; } private static List SetAddTruckBillData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { BillTruckCustDetail data = new BillTruckCustDetail(); #region Set DB data to Object data.BSNO = Convert.ToString(reader["BSNO"]); if (reader["ETD"] != DBNull.Value) data.ETD = Convert.ToString(reader["ETD"]); data.ORDERNO = Convert.ToString(reader["ORDERNO"]); data.CONTRACTNO = Convert.ToString(reader["CONTRACTNO"]); data.CUSTATTN = Convert.ToString(reader["CUSTATTN"]); data.MBLNO = Convert.ToString(reader["MBLNO"]); data.CUSTTEL = Convert.ToString(reader["CUSTTEL"]); data.CUSTNO = Convert.ToString(reader["CUSTNO"]); data.CONSIGNEENAME = Convert.ToString(reader["CONSIGNEENAME"]); data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]); data.CONSIGNEEATTN = Convert.ToString(reader["CONSIGNEEATTN"]); data.CONSIGNEETEL = Convert.ToString(reader["CONSIGNEETEL"]); data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]); data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]); data.CONSIGNEEADDR = Convert.ToString(reader["CONSIGNEEADDR"]); data.OP = Convert.ToString(reader["OP"]); data.CUSTSERVICE = Convert.ToString(reader["CUSTSERVICE"]); data.SALE = Convert.ToString(reader["SALE"]); data.GOODSNAME = Convert.ToString(reader["GOODSNAME"]); data.TRUCKER = Convert.ToString(reader["TRUCKER"]); data.TRUCKNO = Convert.ToString(reader["TRUCKNO"]); data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]); data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]); data.OP = Convert.ToString(reader["OP"]); data.CUSTSERVICE = Convert.ToString(reader["CUSTSERVICE"]); data.FEEOBJNAME = Convert.ToString(reader["CUSTNAME"]); if (reader["RMBDR"] != DBNull.Value) data.RMBDrAmount = Convert.ToDecimal(reader["RMBDR"]); if (reader["BALRMBDR"] != DBNull.Value) data.RMBDrBalAmount = Convert.ToDecimal(reader["BALRMBDR"]) - Convert.ToDecimal(reader["BALRMBCR"]); if (reader["BALRMBDR"] != DBNull.Value) data.RMBDrDoAmount = Convert.ToDecimal(reader["BALRMBDR"]) - Convert.ToDecimal(reader["BALRMBCR"]); if (reader["RMBCR"] != DBNull.Value) data.RMBCrAmount = Convert.ToDecimal(reader["RMBCR"]); if (reader["BALRMBCR"] != DBNull.Value) data.RMBCrBalAmount = Convert.ToDecimal(reader["BALRMBCR"]); if (reader["BALRMBCR"] != DBNull.Value) data.RMBCrDoAmount = Convert.ToDecimal(reader["BALRMBCR"]); if (reader["USDDR"] != DBNull.Value) data.USDDrAmount = Convert.ToDecimal(reader["USDDR"]); if (reader["BALUSDDR"] != DBNull.Value) data.USDDrBalAmount = Convert.ToDecimal(reader["BALUSDDR"]) - Convert.ToDecimal(reader["BALUSDCR"]); if (reader["BALUSDDR"] != DBNull.Value) data.USDDrDoAmount = Convert.ToDecimal(reader["BALUSDDR"]) - Convert.ToDecimal(reader["BALUSDCR"]); if (reader["USDCR"] != DBNull.Value) data.USDCrAmount = Convert.ToDecimal(reader["USDCR"]); if (reader["BALUSDCR"] != DBNull.Value) data.USDCrBalAmount = Convert.ToDecimal(reader["BALUSDCR"]); if (reader["BALUSDCR"] != DBNull.Value) data.USDCrDoAmount = Convert.ToDecimal(reader["BALUSDCR"]); if (reader["OTDR"] != DBNull.Value) data.OTDrAmount = Convert.ToDecimal(reader["OTDR"]); if (reader["BALOTDR"] != DBNull.Value) data.OTDrBalAmount = Convert.ToDecimal(reader["BALOTDR"]) - Convert.ToDecimal(reader["BALOTCR"]); if (reader["BALOTDR"] != DBNull.Value) data.OTDrDoAmount = Convert.ToDecimal(reader["BALOTDR"]) - Convert.ToDecimal(reader["BALOTCR"]); if (reader["OTCR"] != DBNull.Value) data.OTCrAmount = Convert.ToDecimal(reader["OTCR"]); if (reader["BALOTCR"] != DBNull.Value) data.OTCrBalAmount = Convert.ToDecimal(reader["BALOTCR"]); if (reader["BALOTCR"] != DBNull.Value) data.OTCrDoAmount = Convert.ToDecimal(reader["BALOTCR"]); #endregion headList.Add(data); } reader.Close(); } return headList; } #endregion static public List GetAddSum(string strCondition, string userid, string usercode, string orgcode) { var rangstr = GetRangDAStr("index", userid, usercode, orgcode); if (!string.IsNullOrEmpty(rangstr)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstr; } else { strCondition = rangstr; } } var strSql = new StringBuilder(); strSql.Append(" SELECT f.FEETYPE,(CASE f.FEETYPE WHEN 1 THEN '收' ELSE '付' END) AS FEETYPEREF,f.CURRENCY,Sum(f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0)) AMOUNT "); strSql.Append(" from ch_fee f "); strSql.Append(" left join v_op_bill b on (b.bsno=f.bsno)"); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" where " + strCondition); } strSql.Append(" Group by f.FEETYPE,f.CURRENCY"); return BodySumSetData(strSql); } static public List GetCurrExrateData(string billcust, string billcurr, string feesql, bool custgroup = false) { var strSql = new StringBuilder(); strSql.Append(" SELECT DISTINCT CURRENCY,EXCHANGERATE "); if (!custgroup) strSql.Append(" FROM ch_fee f where CURRENCY<>'" + billcurr + "' AND CUSTOMERNAME='" + billcust + "'"); else strSql.Append(" FROM ch_fee f where CURRENCY<>'" + billcurr + "'"); if (!string.IsNullOrEmpty(feesql)) { strSql.Append(" and " + feesql); } return SetCurrExrateData(strSql); } private static List SetCurrExrateData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { ChFeeExrate data = new ChFeeExrate(); #region Set DB data to Object data.CURR = Convert.ToString(reader["CURRENCY"]); data.EXRATE = 0; if (reader["EXCHANGERATE"] != DBNull.Value) data.DFEXRATE = Convert.ToDecimal(reader["EXCHANGERATE"]); #endregion headList.Add(data); } reader.Close(); } return headList; } #region 费用列表明细 static public List GetFeeDetailList(string strCondition, string userid, string usercode, string orgcode, string sort = null) { var strSql = new StringBuilder(); var PAYUSEFEERANGE = MsSysParamSetDAL.GetData("PARAMNAME='INVFEERANGE'"); if (PAYUSEFEERANGE.PARAMVALUE == "1") { var rangstrfee = GetRangAddFeeDAStr(userid, usercode, orgcode); if (!string.IsNullOrEmpty(rangstrfee)) { if (!string.IsNullOrEmpty(strCondition)) { strCondition = strCondition + " and " + rangstrfee; } else { strCondition = rangstrfee; } } } strSql.Append("SELECT * from (select "); strSql.Append("f.BSNO,f.GID AS CH_ID,FeeType"); strSql.Append(",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99020 and EnumValueID=f.FeeType) as FeeType_Ref"); strSql.Append(",f.feeName,f.customerName,f.amount,f.amount-isnull(f.INVOICE,0)-isnull(f.ORDERINVOICE,0)+isnull(f.ORDERINVSETTLEMENT,0) as balamount,f.currency,f.exChangerate,f.AccTaxRate,f.REMARK"); strSql.Append(",f.INPUTMODE from ch_fee f "); strSql.Append(" where f.ISINVOICE<>1 and ISNULL(f.INVLINKGID,'')='' "); var InvAppFeeStatus = MsSysParamSetDAL.GetData("PARAMNAME='InvAppFeeStatus'"); if (InvAppFeeStatus.PARAMVALUE != "2") strSql.Append(" and f.FEESTATUS IN (0,8,9) "); else strSql.Append(" and f.FEESTATUS IN (2,0,8,9) "); if (!string.IsNullOrEmpty(strCondition)) { strSql.Append(" AND " + strCondition); } var INVISNOTSTL = MsSysParamSetDAL.GetData("PARAMNAME='INVISNOTSTL'"); if (INVISNOTSTL.PARAMVALUE == "1") { strSql.Append(" and ISNULL(f.AMOUNT,0)<>ISNULL(f.SETTLEMENT,0) "); } var INVISNOTRECPAY = MsSysParamSetDAL.GetData("PARAMNAME='INVISNOTRECPAY'"); if (INVISNOTRECPAY.PARAMVALUE == "1") { strSql.Append(" and ISNULL(f.AMOUNT,0)<>ISNULL(f.ORDERAMOUNT,0) "); } strSql.Append(" ) AS VF "); var sortstring = DatasetSort.Getsortstring(sort); if (!string.IsNullOrEmpty(sortstring)) { sortstring = sortstring.Replace("StlAmount", "balamount"); strSql.Append(" order by " + sortstring); } else { strSql.Append(" order by feeName"); } return SetFeeDetailData(strSql); } private static List SetFeeDetailData(StringBuilder strSql) { var headList = new List(); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { ChFeeDetail data = new ChFeeDetail(); #region Set DB data to Object data.BSNO = Convert.ToString(reader["BSNO"]); data.CH_ID = Convert.ToString(reader["CH_ID"]); data.FeeType = Convert.ToInt16(reader["FeeType"]); data.FeeType_Ref = Convert.ToString(reader["FeeType_Ref"]); data.FeeName = Convert.ToString(reader["feeName"]); data.CustomerName = Convert.ToString(reader["customerName"]); data.Amount = Convert.ToDecimal(reader["Amount"]); if (reader["BalAmount"] != DBNull.Value) data.BalAmount = Convert.ToDecimal(reader["BalAmount"]); if (reader["BalAmount"] != DBNull.Value) data.StlAmount = Convert.ToDecimal(reader["BalAmount"]); data.Currency = Convert.ToString(reader["Currency"]); data.ExChangerate = Convert.ToDecimal(reader["exChangerate"]); if (reader["AccTaxRate"] != DBNull.Value) data.AccTaxRate = Convert.ToDecimal(reader["AccTaxRate"]); data.INPUTMODE = Convert.ToString(reader["INPUTMODE"]); data.Remark = Convert.ToString(reader["REMARK"]); #endregion headList.Add(data); } reader.Close(); } return headList; } #endregion #region 发票明细保存,删除 public static DBResult SaveInvDetail(string BsNo, List bodyList) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdInsert = db.GetSqlStringCommand( @"insert into ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE) values (@GID,@PID,@SerialNo,@GOODSNAME,@SPEC,@UNIT,@PKGS,@TAXPRICE,@PRICE,@AMOUNT,@TAXRATE,@TAX,@Remark,@GOODCODE) "); var cmdUpdate = db.GetSqlStringCommand( @"update ch_fee_invoicedetail set SerialNo=@SerialNo,GOODSNAME=@GOODSNAME,SPEC=@SPEC,UNIT=@UNIT,PKGS=@PKGS,TAXPRICE=@TAXPRICE ,PRICE=@PRICE,AMOUNT=@AMOUNT,TAXRATE=@TAXRATE,Remark=@Remark,TAX=@TAX,GOODCODE=@GOODCODE where GID=@GID "); if (bodyList != null) { foreach (var enumValue in bodyList) { if (enumValue.PID == "*" || enumValue.GID == "") { cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@GID", DbType.String, Guid.NewGuid().ToString()); db.AddInParameter(cmdInsert, "@PID", DbType.String, BsNo); db.AddInParameter(cmdInsert, "@SerialNo", DbType.Int32, enumValue.SERIALNO); db.AddInParameter(cmdInsert, "@GOODSNAME", DbType.String, enumValue.GOODSNAME); db.AddInParameter(cmdInsert, "@SPEC", DbType.String, enumValue.SPEC); db.AddInParameter(cmdInsert, "@UNIT", DbType.String, enumValue.UNIT); db.AddInParameter(cmdInsert, "@PKGS", DbType.Decimal, enumValue.PKGS); db.AddInParameter(cmdInsert, "@TAXPRICE", DbType.Decimal, enumValue.TAXPRICE); db.AddInParameter(cmdInsert, "@PRICE", DbType.Decimal, enumValue.PRICE); db.AddInParameter(cmdInsert, "@AMOUNT", DbType.Decimal, enumValue.AMOUNT); db.AddInParameter(cmdInsert, "@TAXRATE", DbType.Decimal, enumValue.TAXRATE); db.AddInParameter(cmdInsert, "@TAX", DbType.Decimal, enumValue.TAX); db.AddInParameter(cmdInsert, "@Remark", DbType.String, enumValue.REMARK); db.AddInParameter(cmdInsert, "@GOODCODE", DbType.String, enumValue.GOODCODE); db.ExecuteNonQuery(cmdInsert, tran); } else { cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@GID", DbType.String, enumValue.GID); db.AddInParameter(cmdUpdate, "@SerialNo", DbType.Int32, enumValue.SERIALNO); db.AddInParameter(cmdUpdate, "@GOODSNAME", DbType.String, enumValue.GOODSNAME); db.AddInParameter(cmdUpdate, "@SPEC", DbType.String, enumValue.SPEC); db.AddInParameter(cmdUpdate, "@UNIT", DbType.String, enumValue.UNIT); db.AddInParameter(cmdUpdate, "@PKGS", DbType.Decimal, enumValue.PKGS); db.AddInParameter(cmdUpdate, "@TAXPRICE", DbType.Decimal, enumValue.TAXPRICE); db.AddInParameter(cmdUpdate, "@PRICE", DbType.Decimal, enumValue.PRICE); db.AddInParameter(cmdUpdate, "@AMOUNT", DbType.Decimal, enumValue.AMOUNT); db.AddInParameter(cmdUpdate, "@TAXRATE", DbType.Decimal, enumValue.TAXRATE); db.AddInParameter(cmdUpdate, "@TAX", DbType.Decimal, enumValue.TAX); db.AddInParameter(cmdUpdate, "@Remark", DbType.String, enumValue.REMARK); db.AddInParameter(cmdUpdate, "@GOODCODE", DbType.String, enumValue.GOODCODE); db.ExecuteNonQuery(cmdUpdate, tran); } } } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功" + result.Message; return result; } public static DBResult DelInvDetail(List bodyList) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdInsert = db.GetSqlStringCommand( @"delete from ch_fee_invoicedetail where GID=@GID "); if (bodyList != null) { foreach (var enumValue in bodyList) { cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@GID", DbType.String, enumValue.GID); db.ExecuteNonQuery(cmdInsert, tran); } } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "删除出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "删除成功" + result.Message; return result; } #endregion public static DBResult AddDetail(string billno, List bodyList, string curr, string companyid, bool isList, string GID, ChInvoice_HangXin headData) { var result = new DBResult(); bool INVAPPMAX = false; decimal ttlamount = headData.INVAMOUNT; var INVAPPMAXPARAM = MsSysParamSetDAL.GetData("PARAMNAME='INVAPPMAX'"); if (INVAPPMAXPARAM.PARAMVALUE == "1") { INVAPPMAX = true; } var INVAMOUNTASSUM = MsSysParamSetDAL.GetData("PARAMNAME='INVAMOUNTASSUM'").PARAMVALUE; var invfeesumlist = new List(); if (ttlamount >= 99999 && INVAPPMAX) { result.Success = false; result.Message = "单张发票申请不能超过十万元"; return result; } bool ischaoe = false; var defGOOD = MsCodeGoodInvDAL.GetData(" ISDEF='1' and (DEFCURR='' or DEFCURR='" + headData.RECVCURR + "')"); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdInsert = db.GetSqlStringCommand( @"insert into ch_fee_do (GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY ,AMOUNT,DOAMOUNT,FEETYPE,CATEGORY,BILLSTATUS,ISDELETED,CREATETIME ,EXCHANGERATE,ORIGCURRENCY,ORIGAMOUNT,INVOICESETTLENO,COMPANYID) values (@GID,@BILLNO,@BSNO,@MBLNO,@HBLNO,@CUSTOMERNAME,@BSTYPE,@FEEID,@FEENAME,@CURRENCY ,@AMOUNT,@DOAMOUNT,@FEETYPE,@CATEGORY,@BILLSTATUS,@ISDELETED,@CREATETIME ,@EXCHANGERATE,@ORIGCURRENCY,@ORIGAMOUNT,@INVOICESETTLENO,@COMPANYID) "); var cmdUpdate = db.GetSqlStringCommand( @"UPDATE CH_FEE SET INVOICE=ISNULL(INVOICE,0)+@INVOICE,INVOICENUM=@INVOICENUM WHERE GID=@GID "); var cmdInsertInv = db.GetSqlStringCommand( @"insert into ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE) values (@GID,@PID,@SerialNo,@GOODSNAME,@SPEC,@UNIT,@PKGS,@TAXPRICE,@PRICE,@AMOUNT,@TAXRATE,@TAX,@Remark,@GOODCODE) "); var cmdUpdateInv = db.GetSqlStringCommand( @"update ch_fee_invoicedetail set TAXPRICE=@TAXPRICE ,PRICE=@PRICE,AMOUNT=@AMOUNT,TAX=@TAX where GID=@GID "); decimal amtttl = 0; decimal acctaxrate = 0; decimal doamount = 0; decimal StlAmount = 0; if (bodyList != null) { foreach (var enumValue in bodyList) { if ((ttlamount + Math.Round(enumValue.DoAmount, 2, MidpointRounding.AwayFromZero)) >= 99999 && INVAPPMAX) { StlAmount = 0; doamount = 0; ischaoe = true; //doamount = 99999-ttlamount; //StlAmount = Math.Round(enumValue.StlAmount*((99999 - ttlamount)/doamount),2, MidpointRounding.AwayFromZero); } else { cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@GID", DbType.String, Guid.NewGuid().ToString()); db.AddInParameter(cmdInsert, "@BILLNO", DbType.String, billno); db.AddInParameter(cmdInsert, "@BSNO", DbType.String, enumValue.BSNO); db.AddInParameter(cmdInsert, "@MBLNO", DbType.String, enumValue.MBLNO); db.AddInParameter(cmdInsert, "@HBLNO", DbType.String, enumValue.HBLNO); db.AddInParameter(cmdInsert, "@CUSTOMERNAME", DbType.String, enumValue.FeeObjName); //var tops = enumValue.BSNO.Substring(0, 7); //if (tops == "topseae") // db.AddInParameter(cmdInsert, "@BSTYPE", DbType.Boolean, true); //else db.AddInParameter(cmdInsert, "@BSTYPE", DbType.Boolean, false); db.AddInParameter(cmdInsert, "@FEEID", DbType.String, enumValue.CH_ID); db.AddInParameter(cmdInsert, "@FEENAME", DbType.String, enumValue.FeeName); db.AddInParameter(cmdInsert, "@CURRENCY", DbType.String, curr); db.AddInParameter(cmdInsert, "@AMOUNT", DbType.Decimal, Math.Round(enumValue.DoAmount, 2)); db.AddInParameter(cmdInsert, "@DOAMOUNT", DbType.Decimal, 0); db.AddInParameter(cmdInsert, "@FEETYPE", DbType.Int16, enumValue.FeeType); db.AddInParameter(cmdInsert, "@CATEGORY", DbType.Int16, 7); db.AddInParameter(cmdInsert, "@BILLSTATUS", DbType.Int16, 1); db.AddInParameter(cmdInsert, "@ISDELETED", DbType.Boolean, false); db.AddInParameter(cmdInsert, "@CREATETIME", DbType.DateTime, DateTime.Now); db.AddInParameter(cmdInsert, "@EXCHANGERATE", DbType.Decimal, enumValue.ExChangerate); db.AddInParameter(cmdInsert, "@ORIGCURRENCY", DbType.String, enumValue.Currency); db.AddInParameter(cmdInsert, "@ORIGAMOUNT", DbType.Decimal, enumValue.StlAmount); db.AddInParameter(cmdInsert, "@INVOICESETTLENO", DbType.String, ""); db.AddInParameter(cmdInsert, "@COMPANYID", DbType.String, companyid); db.ExecuteNonQuery(cmdInsert, tran); cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@GID", DbType.String, enumValue.CH_ID); db.AddInParameter(cmdUpdate, "@INVOICE", DbType.Decimal, enumValue.StlAmount); db.AddInParameter(cmdUpdate, "@INVOICENUM", DbType.String, headData.INVOICENO); db.ExecuteNonQuery(cmdUpdate, tran); if (isList) { cmdInsertInv.Parameters.Clear(); db.AddInParameter(cmdInsertInv, "@GID", DbType.String, Guid.NewGuid().ToString()); db.AddInParameter(cmdInsertInv, "@PID", DbType.String, GID); db.AddInParameter(cmdInsertInv, "@SerialNo", DbType.Int32, 1); db.AddInParameter(cmdInsertInv, "@GOODSNAME", DbType.String, enumValue.FeeName); db.AddInParameter(cmdInsertInv, "@SPEC", DbType.String, ""); db.AddInParameter(cmdInsertInv, "@UNIT", DbType.String, "票"); db.AddInParameter(cmdInsertInv, "@PKGS", DbType.Decimal, 1); db.AddInParameter(cmdInsertInv, "@TAXPRICE", DbType.Decimal, Math.Round(enumValue.DoAmount, 2)); db.AddInParameter(cmdInsertInv, "@TAXRATE", DbType.Decimal, headData.EXCHANGERATE); if (headData.EXCHANGERATE == 0) { db.AddInParameter(cmdInsertInv, "@PRICE", DbType.Decimal, Math.Round(enumValue.DoAmount, 2)); db.AddInParameter(cmdInsertInv, "@AMOUNT", DbType.Decimal, Math.Round(enumValue.DoAmount, 2)); db.AddInParameter(cmdInsertInv, "@TAX", DbType.Decimal, 0); } else { var tax = Math.Round(enumValue.DoAmount / (1 + headData.EXCHANGERATE / 100) * (headData.EXCHANGERATE / 100), 2); var amount = enumValue.DoAmount - tax; db.AddInParameter(cmdInsertInv, "@PRICE", DbType.Decimal, amount); db.AddInParameter(cmdInsertInv, "@AMOUNT", DbType.Decimal, amount); db.AddInParameter(cmdInsertInv, "@TAX", DbType.Decimal, tax); } db.AddInParameter(cmdInsertInv, "@Remark", DbType.String, ""); db.AddInParameter(cmdInsertInv, "@GOODCODE", DbType.String, ""); db.ExecuteNonQuery(cmdInsertInv, tran); } if (enumValue.FeeType == 2) amtttl = amtttl - enumValue.DoAmount; else amtttl = amtttl + enumValue.DoAmount; var invfeesum = invfeesumlist.Find(x => x.CURR == enumValue.Currency && x.exchange == enumValue.ExChangerate); if (invfeesum == null) { var newinvfeesum = new InvoiceFeeSum(); newinvfeesum.CURR = enumValue.Currency; newinvfeesum.exchange = enumValue.ExChangerate; if (enumValue.FeeType == 1) newinvfeesum.amount = enumValue.StlAmount; else newinvfeesum.amount = -enumValue.StlAmount; invfeesumlist.Add(newinvfeesum); } else { if (enumValue.FeeType == 1) invfeesum.amount = invfeesum.amount + enumValue.StlAmount; else invfeesum.amount = invfeesum.amount - enumValue.StlAmount; } } } } acctaxrate = headData.EXCHANGERATE; if (INVAMOUNTASSUM == "1") { amtttl = 0; foreach (var invfeesum in invfeesumlist) { amtttl = amtttl + Math.Round(invfeesum.amount * invfeesum.exchange, 2, MidpointRounding.AwayFromZero); } } if (!isList && amtttl != 0) { var dataList = GetDetailList(" PID='" + GID + "'"); if (dataList.Count != 0) { var invlist = dataList[0]; cmdUpdateInv.Parameters.Clear(); db.AddInParameter(cmdUpdateInv, "@GID", DbType.String, invlist.GID); if (acctaxrate == 0) { db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, Math.Round(invlist.AMOUNT + amtttl, 2)); db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, Math.Round((invlist.AMOUNT + amtttl) / invlist.PKGS, 2)); db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, Math.Round((invlist.AMOUNT + amtttl) / invlist.PKGS, 2)); db.AddInParameter(cmdUpdateInv, "@TAXRATE", DbType.Decimal, 0); db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, 0); } else { amtttl = amtttl + (invlist.TAXPRICE * invlist.PKGS); var tax = Math.Round(amtttl / (1 + acctaxrate / 100) * (acctaxrate / 100), 2); var amount = amtttl - tax; db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, Math.Round(amtttl, 2)); db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, amount); db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, amount); db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, tax); //var tax = Math.Round(amtttl / (1 + acctaxrate / 100) * (acctaxrate / 100), 2); //var amount = amtttl - tax; //db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, invlist.AMOUNT + amount); //db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal,Math.Round(((invlist.AMOUNT + amount) / invlist.PKGS) * (1 + acctaxrate / 100),2)); //db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, Math.Round((invlist.AMOUNT + amount) / invlist.PKGS,2)); //db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal,invlist.TAX+tax); } db.ExecuteNonQuery(cmdUpdateInv, tran); } else { cmdInsertInv.Parameters.Clear(); db.AddInParameter(cmdInsertInv, "@GID", DbType.String, Guid.NewGuid().ToString()); db.AddInParameter(cmdInsertInv, "@PID", DbType.String, GID); db.AddInParameter(cmdInsertInv, "@SerialNo", DbType.Int32, 1); if (defGOOD.GOODNAME == "") { db.AddInParameter(cmdInsertInv, "@GOODSNAME", DbType.String, "代理运杂费"); db.AddInParameter(cmdInsertInv, "@UNIT", DbType.String, "票"); } else { db.AddInParameter(cmdInsertInv, "@GOODSNAME", DbType.String, defGOOD.GID); db.AddInParameter(cmdInsertInv, "@UNIT", DbType.String, defGOOD.UNIT); } db.AddInParameter(cmdInsertInv, "@SPEC", DbType.String, defGOOD.SPEC); db.AddInParameter(cmdInsertInv, "@PKGS", DbType.Decimal, 1); db.AddInParameter(cmdInsertInv, "@TAXPRICE", DbType.Decimal, Math.Round(amtttl, 2)); db.AddInParameter(cmdInsertInv, "@TAXRATE", DbType.Decimal, acctaxrate); if (acctaxrate == 0) { db.AddInParameter(cmdInsertInv, "@PRICE", DbType.Decimal, Math.Round(amtttl, 2)); db.AddInParameter(cmdInsertInv, "@AMOUNT", DbType.Decimal, Math.Round(amtttl, 2)); db.AddInParameter(cmdInsertInv, "@TAX", DbType.Decimal, 0); } else { var tax = Math.Round(amtttl / (1 + acctaxrate / 100) * (acctaxrate / 100), 2); var amount = amtttl - tax; db.AddInParameter(cmdInsertInv, "@PRICE", DbType.Decimal, amount); db.AddInParameter(cmdInsertInv, "@AMOUNT", DbType.Decimal, amount); db.AddInParameter(cmdInsertInv, "@TAX", DbType.Decimal, tax); } db.AddInParameter(cmdInsertInv, "@Remark", DbType.String, ""); db.AddInParameter(cmdInsertInv, "@GOODCODE", DbType.String, defGOOD.GOODCODE); db.ExecuteNonQuery(cmdInsertInv, tran); } } if (ischaoe) { result.Success = false; result.Message = "单张发票不能超过十万元"; } else { result = new DBResult(); result.Success = true; result.Message = "保存成功"; } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } //result.Success = true; //result.Message = "保存成功" + result.Message; return result; } public static DBResult AddBill(ChInvoice_HangXin headData, string feesql, List exratelist, string companyid, bool isList, string GID, string userid, bool custgroup = false) { var result = new DBResult(); var defGOOD = MsCodeGoodInvDAL.GetData(" ISDEF='1' and (DEFCURR='' or DEFCURR='" + headData.RECVCURR + "') "); Database db = DatabaseFactory.CreateDatabase(); decimal amtttl = 0; decimal acctaxrate = 0; bool INVAPPMAX = false; decimal ttlamount = headData.INVAMOUNT; var INVAPPMAXPARAM = MsSysParamSetDAL.GetData("PARAMNAME='INVAPPMAX'"); if (INVAPPMAXPARAM.PARAMVALUE == "1") { INVAPPMAX = true; } var INVAMOUNTASSUM = MsSysParamSetDAL.GetData("PARAMNAME='INVAMOUNTASSUM'").PARAMVALUE; var invfeesumlist = new List(); if (ttlamount >= 99999 && INVAPPMAX) { result.Success = false; result.Message = "单张发票申请不能超过十万元"; return result; } bool ischaoe = false; using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { if (!custgroup) feesql = feesql + " AND CUSTOMERNAME='" + headData.CUSTOMERNAME + "'"; var feelist = GetFeeDetailList(feesql, userid, "", companyid); var cmdInsert = db.GetSqlStringCommand( @"insert into ch_fee_do (GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY ,AMOUNT,DOAMOUNT,FEETYPE,CATEGORY,BILLSTATUS,ISDELETED,CREATETIME ,EXCHANGERATE,ORIGCURRENCY,ORIGAMOUNT,INVOICESETTLENO,COMPANYID) values (@GID,@BILLNO,@BSNO,@MBLNO,@HBLNO,@CUSTOMERNAME,@BSTYPE,@FEEID,@FEENAME,@CURRENCY ,@AMOUNT,@DOAMOUNT,@FEETYPE,@CATEGORY,@BILLSTATUS,@ISDELETED,@CREATETIME ,@EXCHANGERATE,@ORIGCURRENCY,@ORIGAMOUNT,@INVOICESETTLENO,@COMPANYID) "); var cmdUpdate = db.GetSqlStringCommand( @"UPDATE CH_FEE SET INVOICE=ISNULL(INVOICE,0)+@INVOICE,INVOICENUM=@INVOICENUM WHERE GID=@GID "); var cmdInsertInv = db.GetSqlStringCommand( @"insert into ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE) values (@GID,@PID,@SerialNo,@GOODSNAME,@SPEC,@UNIT,@PKGS,@TAXPRICE,@PRICE,@AMOUNT,@TAXRATE,@TAX,@Remark,@GOODCODE) "); var cmdUpdateInv = db.GetSqlStringCommand( @"update ch_fee_invoicedetail set TAXPRICE=@TAXPRICE ,PRICE=@PRICE,AMOUNT=@AMOUNT,TAX=@TAX where GID=@GID "); if (feelist != null) { foreach (var enumValue in feelist) { decimal feettl = 0; decimal otamount = 0; ischaoe = false; if (headData.CURRENCY == enumValue.Currency) { feettl = enumValue.StlAmount; if (enumValue.FeeType == 2) otamount = -enumValue.StlAmount; else otamount = enumValue.StlAmount; if ((ttlamount + Math.Round(otamount, 2, MidpointRounding.AwayFromZero)) >= 100000 && INVAPPMAX) { feettl = 0; ischaoe = true; } } else { var UExrate = GetExrate(enumValue.Currency, exratelist); if (enumValue.FeeType == 2) otamount = -enumValue.StlAmount * UExrate; else otamount = enumValue.StlAmount * UExrate; if ((ttlamount + Math.Round(otamount, 2, MidpointRounding.AwayFromZero)) >= 100000 && INVAPPMAX) { feettl = 0; ischaoe = true; } } if (!ischaoe) { cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@GID", DbType.String, Guid.NewGuid().ToString()); db.AddInParameter(cmdInsert, "@BILLNO", DbType.String, headData.BILLNO); db.AddInParameter(cmdInsert, "@BSNO", DbType.String, enumValue.BSNO); db.AddInParameter(cmdInsert, "@MBLNO", DbType.String, ""); db.AddInParameter(cmdInsert, "@HBLNO", DbType.String, ""); db.AddInParameter(cmdInsert, "@CUSTOMERNAME", DbType.String, enumValue.CustomerName); //var tops = enumValue.BSNO.Substring(0, 7); //if (tops == "topseae") // db.AddInParameter(cmdInsert, "@BSTYPE", DbType.Boolean, true); //else db.AddInParameter(cmdInsert, "@BSTYPE", DbType.Boolean, false); db.AddInParameter(cmdInsert, "@FEEID", DbType.String, enumValue.CH_ID); db.AddInParameter(cmdInsert, "@FEENAME", DbType.String, enumValue.FeeName); db.AddInParameter(cmdInsert, "@CURRENCY", DbType.String, headData.CURRENCY); if (headData.CURRENCY == enumValue.Currency) { db.AddInParameter(cmdInsert, "@AMOUNT", DbType.Decimal, enumValue.StlAmount); db.AddInParameter(cmdInsert, "@DOAMOUNT", DbType.Decimal, 0); db.AddInParameter(cmdInsert, "@EXCHANGERATE", DbType.Decimal, 1); if (enumValue.FeeType == 2) amtttl = amtttl - enumValue.StlAmount; else amtttl = amtttl + enumValue.StlAmount; enumValue.ExChangerate = 1; } else { var UExrate = GetExrate(enumValue.Currency, exratelist); db.AddInParameter(cmdInsert, "@AMOUNT", DbType.Decimal, Math.Round(enumValue.StlAmount * UExrate, 2)); db.AddInParameter(cmdInsert, "@DOAMOUNT", DbType.Decimal, 0); db.AddInParameter(cmdInsert, "@EXCHANGERATE", DbType.Decimal, UExrate); if (enumValue.FeeType == 2) amtttl = amtttl - Math.Round(enumValue.StlAmount * UExrate, 2); else amtttl = amtttl + Math.Round(enumValue.StlAmount * UExrate, 2); enumValue.ExChangerate = UExrate; } db.AddInParameter(cmdInsert, "@FEETYPE", DbType.Int16, enumValue.FeeType); db.AddInParameter(cmdInsert, "@ORIGCURRENCY", DbType.String, enumValue.Currency); db.AddInParameter(cmdInsert, "@ORIGAMOUNT", DbType.Decimal, enumValue.StlAmount); db.AddInParameter(cmdInsert, "@CATEGORY", DbType.Int16, 7); db.AddInParameter(cmdInsert, "@BILLSTATUS", DbType.Int16, 1); db.AddInParameter(cmdInsert, "@ISDELETED", DbType.Boolean, false); db.AddInParameter(cmdInsert, "@CREATETIME", DbType.DateTime, DateTime.Now); db.AddInParameter(cmdInsert, "@INVOICESETTLENO", DbType.String, ""); db.AddInParameter(cmdInsert, "@COMPANYID", DbType.String, companyid); db.ExecuteNonQuery(cmdInsert, tran); var invfeesum = invfeesumlist.Find(x => x.CURR == enumValue.Currency && x.exchange == enumValue.ExChangerate); if (invfeesum == null) { var newinvfeesum = new InvoiceFeeSum(); newinvfeesum.CURR = enumValue.Currency; newinvfeesum.exchange = enumValue.ExChangerate; if (enumValue.FeeType == 1) newinvfeesum.amount = enumValue.StlAmount; else newinvfeesum.amount = -enumValue.StlAmount; invfeesumlist.Add(newinvfeesum); } else { if (enumValue.FeeType == 1) invfeesum.amount = invfeesum.amount + enumValue.StlAmount; else invfeesum.amount = invfeesum.amount - enumValue.StlAmount; } cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@GID", DbType.String, enumValue.CH_ID); db.AddInParameter(cmdUpdate, "@INVOICE", DbType.Decimal, enumValue.StlAmount); db.AddInParameter(cmdUpdate, "@INVOICENUM", DbType.String, headData.INVOICENO); db.ExecuteNonQuery(cmdUpdate, tran); ttlamount = ttlamount + amtttl; if (isList) { cmdInsertInv.Parameters.Clear(); db.AddInParameter(cmdInsertInv, "@GID", DbType.String, Guid.NewGuid().ToString()); db.AddInParameter(cmdInsertInv, "@PID", DbType.String, GID); db.AddInParameter(cmdInsertInv, "@SerialNo", DbType.Int32, 1); db.AddInParameter(cmdInsertInv, "@GOODSNAME", DbType.String, enumValue.FeeName); db.AddInParameter(cmdInsertInv, "@SPEC", DbType.String, ""); db.AddInParameter(cmdInsertInv, "@UNIT", DbType.String, "票"); db.AddInParameter(cmdInsertInv, "@PKGS", DbType.Decimal, 1); db.AddInParameter(cmdInsertInv, "@TAXRATE", DbType.Decimal, enumValue.AccTaxRate); if (headData.CURRENCY == enumValue.Currency) { db.AddInParameter(cmdInsertInv, "@TAXPRICE", DbType.Decimal, enumValue.StlAmount); if (headData.EXCHANGERATE == 0) { db.AddInParameter(cmdInsertInv, "@PRICE", DbType.Decimal, enumValue.StlAmount); db.AddInParameter(cmdInsertInv, "@AMOUNT", DbType.Decimal, enumValue.StlAmount); db.AddInParameter(cmdInsertInv, "@TAX", DbType.Decimal, 0); } else { var tax = Math.Round(enumValue.StlAmount / (1 + headData.EXCHANGERATE / 100) * (headData.EXCHANGERATE / 100), 2); var amount = amtttl - tax; db.AddInParameter(cmdInsertInv, "@PRICE", DbType.Decimal, amount); db.AddInParameter(cmdInsertInv, "@AMOUNT", DbType.Decimal, amount); db.AddInParameter(cmdInsertInv, "@TAX", DbType.Decimal, tax); } } else { var UExrate = GetExrate(enumValue.Currency, exratelist); db.AddInParameter(cmdInsertInv, "@TAXPRICE", DbType.Decimal, Math.Round(enumValue.StlAmount * UExrate, 2)); if (headData.EXCHANGERATE == 0) { db.AddInParameter(cmdInsertInv, "@PRICE", DbType.Decimal, Math.Round(enumValue.StlAmount * UExrate, 2)); db.AddInParameter(cmdInsertInv, "@AMOUNT", DbType.Decimal, Math.Round(enumValue.StlAmount * UExrate, 2)); db.AddInParameter(cmdInsertInv, "@TAX", DbType.Decimal, 0); } else { var tax = Math.Round((enumValue.StlAmount * UExrate) / (1 + headData.EXCHANGERATE / 100) * (headData.EXCHANGERATE / 100), 2); var amount = Math.Round((enumValue.StlAmount * UExrate) - tax, 2); // var amount =Math.Round((enumValue.StlAmount * UExrate) / (1 + enumValue.AccTaxRate / 100),2); db.AddInParameter(cmdInsertInv, "@PRICE", DbType.Decimal, amount); db.AddInParameter(cmdInsertInv, "@AMOUNT", DbType.Decimal, amount); db.AddInParameter(cmdInsertInv, "@TAX", DbType.Decimal, tax); } } db.AddInParameter(cmdInsertInv, "@Remark", DbType.String, ""); db.AddInParameter(cmdInsertInv, "@GOODCODE", DbType.String, ""); db.ExecuteNonQuery(cmdInsertInv, tran); } } } } acctaxrate = headData.EXCHANGERATE; if (INVAMOUNTASSUM == "1") { amtttl = 0; foreach (var invfeesum in invfeesumlist) { amtttl = amtttl + Math.Round(invfeesum.amount * invfeesum.exchange, 2, MidpointRounding.AwayFromZero); } } if (!isList && amtttl != 0) { var dataList = GetDetailList(" PID='" + GID + "'"); if (dataList.Count != 0) { var invlist = dataList[0]; cmdUpdateInv.Parameters.Clear(); db.AddInParameter(cmdUpdateInv, "@GID", DbType.String, invlist.GID); if (acctaxrate == 0) { db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, Math.Round(invlist.AMOUNT + amtttl, 2)); db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, Math.Round((invlist.AMOUNT + amtttl) / invlist.PKGS, 2)); db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, Math.Round((invlist.AMOUNT + amtttl) / invlist.PKGS, 2)); db.AddInParameter(cmdUpdateInv, "@TAXRATE", DbType.Decimal, 0); db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, 0); } else { amtttl = amtttl + (invlist.TAXPRICE * invlist.PKGS); var tax = Math.Round(amtttl / (1 + acctaxrate / 100) * (acctaxrate / 100), 2); var amount = amtttl - tax; db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, Math.Round(amtttl, 2)); db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, amount); db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, amount); db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, tax); //var tax = Math.Round(amtttl / (1 + acctaxrate / 100) * (acctaxrate / 100), 2); //var amount =amtttl- tax; //db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, Math.Round(invlist.AMOUNT + amount,2)); //db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, Math.Round(((invlist.AMOUNT + amount) / invlist.PKGS) * (1 + acctaxrate / 100),2)); //db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal,Math.Round((invlist.AMOUNT + amount) / invlist.PKGS,2)); //db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, invlist.TAX+tax); } db.ExecuteNonQuery(cmdUpdateInv, tran); } else { cmdInsertInv.Parameters.Clear(); db.AddInParameter(cmdInsertInv, "@GID", DbType.String, Guid.NewGuid().ToString()); db.AddInParameter(cmdInsertInv, "@PID", DbType.String, GID); db.AddInParameter(cmdInsertInv, "@SerialNo", DbType.Int32, 1); if (defGOOD.GOODNAME == "") { db.AddInParameter(cmdInsertInv, "@GOODSNAME", DbType.String, "代理运杂费"); db.AddInParameter(cmdInsertInv, "@UNIT", DbType.String, "票"); } else { db.AddInParameter(cmdInsertInv, "@GOODSNAME", DbType.String, defGOOD.GID); db.AddInParameter(cmdInsertInv, "@UNIT", DbType.String, defGOOD.UNIT); } db.AddInParameter(cmdInsertInv, "@SPEC", DbType.String, defGOOD.SPEC); db.AddInParameter(cmdInsertInv, "@PKGS", DbType.Decimal, 1); db.AddInParameter(cmdInsertInv, "@TAXPRICE", DbType.Decimal, amtttl); db.AddInParameter(cmdInsertInv, "@TAXRATE", DbType.Decimal, acctaxrate); if (acctaxrate == 0) { db.AddInParameter(cmdInsertInv, "@PRICE", DbType.Decimal, amtttl); db.AddInParameter(cmdInsertInv, "@AMOUNT", DbType.Decimal, amtttl); db.AddInParameter(cmdInsertInv, "@TAX", DbType.Decimal, 0); } else { var tax = Math.Round(amtttl / (1 + acctaxrate / 100) * (acctaxrate / 100), 2); var amount = amtttl - tax; // var amount = Math.Round(amtttl / (1 + acctaxrate / 100),2); db.AddInParameter(cmdInsertInv, "@PRICE", DbType.Decimal, amount); db.AddInParameter(cmdInsertInv, "@AMOUNT", DbType.Decimal, amount); db.AddInParameter(cmdInsertInv, "@TAX", DbType.Decimal, tax); } db.AddInParameter(cmdInsertInv, "@Remark", DbType.String, ""); db.AddInParameter(cmdInsertInv, "@GOODCODE", DbType.String, defGOOD.GOODCODE); db.ExecuteNonQuery(cmdInsertInv, tran); } } if (ischaoe) { result.Success = false; result.Message = "单张发票不能超过十万元"; } else { result = new DBResult(); result.Success = true; result.Message = "保存成功"; } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } //result.Success = true; //result.Message = "保存成功"; return result; } public static DBResult updateFeeTax(string billno, decimal taxrate) { var result = new DBResult(); var dataList = ChinvoiceDAL.GetBodyList("BILLNO='" + billno + "'"); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdUpdate = db.GetSqlStringCommand( @"UPDATE CH_FEE SET ACCTAXRATE=@INVOICE WHERE GID=@GID "); if (dataList != null) { foreach (var enumValue in dataList) { cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@GID", DbType.String, enumValue.FEEID); db.AddInParameter(cmdUpdate, "@INVOICE", DbType.Decimal, taxrate); db.ExecuteNonQuery(cmdUpdate, tran); } } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功" + result.Message; return result; } public static Decimal GetExrate(string curr, List exratelist) { decimal exrate = 0; if (exratelist != null) { foreach (var enumValue in exratelist) { if (enumValue.CURR == curr) { exrate = enumValue.EXRATE; } } } return exrate; } public static DBResult DelFeeDo(List boday, string GID) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { decimal AMOUNT = 0; if (boday != null) { var cmddelete = db.GetSqlStringCommand("delete from ch_fee_do where GID=@FEEDOID"); var cmdupdate = db.GetSqlStringCommand("update ch_fee set INVOICE=ISNULL(INVOICE,0)-@ORIGAMOUNT,INVOICENUM='' where GID=@GID"); foreach (var enumValue in boday) { cmddelete.Parameters.Clear(); db.AddInParameter(cmddelete, "@FEEDOID", DbType.String, enumValue.FEEDOID); db.ExecuteNonQuery(cmddelete, tran); cmdupdate.Parameters.Clear(); db.AddInParameter(cmdupdate, "@ORIGAMOUNT", DbType.Decimal, enumValue.ORIGAMOUNT); db.AddInParameter(cmdupdate, "@GID", DbType.String, enumValue.FEEID); db.ExecuteNonQuery(cmdupdate, tran); AMOUNT = AMOUNT + enumValue.AMOUNT; } var dataList = GetDetailList(" PID='" + GID + "'"); if (dataList.Count != 0) { var cmdUpdateInv = db.GetSqlStringCommand( @"update ch_fee_invoicedetail set TAXPRICE=@TAXPRICE ,PRICE=@PRICE,AMOUNT=@AMOUNT,TAX=@TAX where GID=@GID "); var invlist = dataList[0]; cmdUpdateInv.Parameters.Clear(); db.AddInParameter(cmdUpdateInv, "@GID", DbType.String, invlist.GID); if (invlist.TAXRATE == 0) { db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, Math.Round(invlist.AMOUNT - AMOUNT, 2)); db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, Math.Round((invlist.AMOUNT - AMOUNT) / invlist.PKGS, 2)); db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, Math.Round((invlist.AMOUNT - AMOUNT) / invlist.PKGS, 2)); db.AddInParameter(cmdUpdateInv, "@TAXRATE", DbType.Decimal, 0); db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, 0); } else { var tax = Math.Round(AMOUNT / (1 + invlist.TAXRATE / 100) * (invlist.TAXRATE / 100), 2); var amount = AMOUNT - tax; db.AddInParameter(cmdUpdateInv, "@AMOUNT", DbType.Decimal, invlist.AMOUNT - amount); db.AddInParameter(cmdUpdateInv, "@TAXPRICE", DbType.Decimal, ((invlist.AMOUNT - amount) / invlist.PKGS) * (1 + invlist.TAXRATE / 100)); db.AddInParameter(cmdUpdateInv, "@PRICE", DbType.Decimal, (invlist.AMOUNT - amount) / invlist.PKGS); db.AddInParameter(cmdUpdateInv, "@TAX", DbType.Decimal, invlist.TAX - tax); } db.ExecuteNonQuery(cmdUpdateInv, tran); } } result = new DBResult(); result.Success = true; result.Message = "成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功"; return result; } public static int p_update_Amount(string billno, string GID) { Database db = DatabaseFactory.CreateDatabase(); var cmd = db.GetStoredProcCommand("p_update_invoice"); db.AddInParameter(cmd, "@con_no", DbType.String, billno); db.AddInParameter(cmd, "@con_gid", DbType.String, GID); db.ExecuteNonQuery(cmd); return 0; } #region 发票申请开票和取消 public static DBResult AddAppDetail(string billno, List bodyList, string invoiceno, string companyid, string GID) { var result = new DBResult(); var invdetailDataList = GetDetailList("PID='" + GID + "'"); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdUpdateInv = db.GetSqlStringCommand( @"update ch_fee_invoice set REMARK=REMARK+' '+@REMARK WHERE BILLNO=@BILLNO"); var cmdInsert = db.GetSqlStringCommand( @"insert ch_fee_do (GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY ,AMOUNT,DOAMOUNT,FEETYPE,CATEGORY,BILLSTATUS,ISDELETED,CREATETIME ,EXCHANGERATE,ORIGCURRENCY,ORIGAMOUNT,INVOICESETTLENO,COMPANYID) SELECT NEWID(),@BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY ,AMOUNT,DOAMOUNT,FEETYPE,7,BILLSTATUS,ISDELETED,GETDATE(),EXCHANGERATE,ORIGCURRENCY ,ORIGAMOUNT,INVOICESETTLENO,COMPANYID from ch_fee_do WHERE BILLNO=@AppBILLNO "); var cmdUpdate = db.GetSqlStringCommand( @"declare @FEEID varchar(100) declare @ORDERINVOICE numeric(19,4) declare CurBill cursor for select FEEID,ORIGAMOUNT ORDERINVOICE from ch_fee_do where BILLNO=@AppBILLNO open CurBill fetch next from CurBill into @FEEID, @ORDERINVOICE while @@Fetch_Status=0 begin UPDATE CH_FEE SET INVOICE=ISNULL(INVOICE,0)+@ORDERINVOICE,ORDERINVSETTLEMENT=ISNULL(ORDERINVSETTLEMENT,0)+@ORDERINVOICE,INVOICENUM=@INVOICENUM WHERE GID=@FEEID fetch next from CurBill into @FEEID, @ORDERINVOICE end; close CurBill dealLocate CurBill "); var cmdUpdateApp = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceapplication set BILLSTATUS=3,INVBILLNO=@INVBILLNO,INVOICENO=@INVOICENO where BILLNO=@BILLNO"); var cmdInsertInvDetail = db.GetSqlStringCommand( @"insert ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE) values (NEWID(),@PID,@SerialNo,@GOODSNAME,@SPEC,@UNIT,@PKGS,@TAXPRICE,@PRICE,@AMOUNT,@TAXRATE,@TAX,@Remark,@GOODCODE) "); var currency = ""; decimal rate = 0; var custrateno = ""; var custaddrtel = ""; var custbank = ""; var INVOICECATEGORY = ""; var ACTUALCUSTOMERNAME = ""; var INVOICECUSTNAME = ""; var REMARK = ""; var invdetailid = ""; if (bodyList != null) { cmdUpdateInv.Parameters.Clear(); db.AddInParameter(cmdUpdateInv, "@BILLNO", DbType.String, billno); foreach (var enumValue in bodyList) { currency = enumValue.CURRENCY; rate = enumValue.RATE; custrateno = enumValue.CUSTRATENO; custaddrtel = enumValue.CUSTADDRTEL; custbank = enumValue.CUSTBANK; INVOICECATEGORY = enumValue.INVOICECATEGORY; ACTUALCUSTOMERNAME = enumValue.ACTUALCUSTOMERNAME; INVOICECUSTNAME = enumValue.INVOICECUSTNAME; REMARK = REMARK + ' ' + enumValue.REMARK; cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@BILLNO", DbType.String, billno); db.AddInParameter(cmdInsert, "@AppBILLNO", DbType.String, enumValue.BILLNO); db.ExecuteNonQuery(cmdInsert, tran); cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@AppBILLNO", DbType.String, enumValue.BILLNO); db.AddInParameter(cmdUpdate, "@INVOICENUM", DbType.String, invoiceno); db.ExecuteNonQuery(cmdUpdate, tran); var invdetaillist = GetDetailList("PID='" + enumValue.GID + "'", db, tran); if (invdetaillist != null) { foreach (var enumInvDetail in invdetaillist) { bool ishave = false; if (invdetailDataList != null && bodyList.Count != 1) { foreach (var invdetailData in invdetailDataList) { if (invdetailData.GOODSNAME == enumInvDetail.GOODSNAME) { invdetailData.TAXPRICE = invdetailData.TAXPRICE + enumInvDetail.TAXPRICE; invdetailData.PRICE = invdetailData.PRICE + enumInvDetail.PRICE; invdetailData.AMOUNT = invdetailData.AMOUNT + enumInvDetail.AMOUNT; invdetailData.TAX = invdetailData.TAX + enumInvDetail.TAX; ishave = true; } } } if (!ishave) { var invdetailtmp = enumInvDetail; invdetailtmp.GID = "*"; invdetailtmp.PID = GID; invdetailDataList.Add(invdetailtmp); } //if (invdetailData.AMOUNT == 0) //{ // invdetailData.GOODCODE = enumInvDetail.GOODCODE; // invdetailData.GOODSNAME = enumInvDetail.GOODSNAME; // invdetailData.GOODSNAMEREF = enumInvDetail.GOODSNAMEREF; // invdetailData.SPEC = enumInvDetail.SPEC; // invdetailData.UNIT = enumInvDetail.UNIT; // invdetailData.PKGS = enumInvDetail.PKGS; // invdetailData.TAXPRICE = enumInvDetail.TAXPRICE; // invdetailData.PRICE = enumInvDetail.PRICE; // invdetailData.TAXRATE = enumInvDetail.TAXRATE; // invdetailData.AMOUNT = enumInvDetail.AMOUNT; // invdetailData.TAX = enumInvDetail.TAX; // invdetailData.REMARK = enumInvDetail.REMARK; //} //else //{ // invdetailData.TAXPRICE = invdetailData.TAXPRICE + enumInvDetail.TAXPRICE; // invdetailData.PRICE = invdetailData.PRICE + enumInvDetail.PRICE; // invdetailData.AMOUNT = invdetailData.AMOUNT + enumInvDetail.AMOUNT; // invdetailData.TAX = invdetailData.TAX + enumInvDetail.TAX; // invdetailid = invdetailData.GID; //} } } cmdUpdateApp.Parameters.Clear(); db.AddInParameter(cmdUpdateApp, "@INVBILLNO", DbType.String, billno); db.AddInParameter(cmdUpdateApp, "@INVOICENO", DbType.String, invoiceno); db.AddInParameter(cmdUpdateApp, "@BILLNO", DbType.String, enumValue.BILLNO); db.ExecuteNonQuery(cmdUpdateApp, tran); } if (invdetailDataList != null) { foreach (var invdetailData in invdetailDataList) { if (invdetailData.GID == "*") { cmdInsertInvDetail.Parameters.Clear(); db.AddInParameter(cmdInsertInvDetail, "@PID", DbType.String, GID); db.AddInParameter(cmdInsertInvDetail, "@SerialNo", DbType.Decimal, 1); db.AddInParameter(cmdInsertInvDetail, "@GOODSNAME", DbType.String, invdetailData.GOODSNAME); db.AddInParameter(cmdInsertInvDetail, "@SPEC", DbType.String, invdetailData.SPEC); db.AddInParameter(cmdInsertInvDetail, "@UNIT", DbType.String, invdetailData.UNIT); db.AddInParameter(cmdInsertInvDetail, "@PKGS", DbType.Decimal, invdetailData.PKGS); db.AddInParameter(cmdInsertInvDetail, "@TAXPRICE", DbType.Decimal, invdetailData.TAXPRICE); db.AddInParameter(cmdInsertInvDetail, "@PRICE", DbType.Decimal, invdetailData.PRICE); db.AddInParameter(cmdInsertInvDetail, "@AMOUNT", DbType.Decimal, invdetailData.AMOUNT); db.AddInParameter(cmdInsertInvDetail, "@TAX", DbType.Decimal, invdetailData.TAX); db.AddInParameter(cmdInsertInvDetail, "@TAXRATE", DbType.Decimal, invdetailData.TAXRATE); db.AddInParameter(cmdInsertInvDetail, "@Remark", DbType.String, ""); db.AddInParameter(cmdInsertInvDetail, "@GOODCODE", DbType.String, invdetailData.GOODCODE); db.ExecuteNonQuery(cmdInsertInvDetail, tran); } else { var cmdUpdateInvDetail = db.GetSqlStringCommand( @"UPDATE ch_fee_invoicedetail set TAXPRICE=@TAXPRICE,PRICE=@PRICE,AMOUNT=@AMOUNT,TAX=@TAX where GID=@GID"); db.AddInParameter(cmdUpdateInvDetail, "@GID", DbType.String, invdetailData.GID); db.AddInParameter(cmdUpdateInvDetail, "@TAXPRICE", DbType.Decimal, invdetailData.TAXPRICE); db.AddInParameter(cmdUpdateInvDetail, "@PRICE", DbType.Decimal, invdetailData.PRICE); db.AddInParameter(cmdUpdateInvDetail, "@AMOUNT", DbType.Decimal, invdetailData.AMOUNT); db.AddInParameter(cmdUpdateInvDetail, "@TAX", DbType.Decimal, invdetailData.TAX); db.ExecuteNonQuery(cmdUpdateInvDetail, tran); } } } //if (invdetailid == string.Empty) //{ // cmdInsertInvDetail.Parameters.Clear(); // db.AddInParameter(cmdInsertInvDetail, "@PID", DbType.String, GID); // db.AddInParameter(cmdInsertInvDetail, "@SerialNo", DbType.Decimal, 1); // db.AddInParameter(cmdInsertInvDetail, "@GOODSNAME", DbType.String, invdetailData.GOODSNAME); // db.AddInParameter(cmdInsertInvDetail, "@SPEC", DbType.String, invdetailData.SPEC); // db.AddInParameter(cmdInsertInvDetail, "@UNIT", DbType.String, invdetailData.UNIT); // db.AddInParameter(cmdInsertInvDetail, "@PKGS", DbType.Decimal, invdetailData.PKGS); // db.AddInParameter(cmdInsertInvDetail, "@TAXPRICE", DbType.Decimal, invdetailData.TAXPRICE); // db.AddInParameter(cmdInsertInvDetail, "@PRICE", DbType.Decimal, invdetailData.PRICE); // db.AddInParameter(cmdInsertInvDetail, "@AMOUNT", DbType.Decimal, invdetailData.AMOUNT); // db.AddInParameter(cmdInsertInvDetail, "@TAX", DbType.Decimal, invdetailData.TAX); // db.AddInParameter(cmdInsertInvDetail, "@TAXRATE", DbType.Decimal, invdetailData.TAXRATE); // db.AddInParameter(cmdInsertInvDetail, "@Remark", DbType.String, ""); // db.AddInParameter(cmdInsertInvDetail, "@GOODCODE", DbType.String, invdetailData.GOODCODE); // db.ExecuteNonQuery(cmdInsertInvDetail, tran); //} //else { // var cmdUpdateInvDetail = // db.GetSqlStringCommand( // @"UPDATE ch_fee_invoicedetail set TAXPRICE=@TAXPRICE,PRICE=@PRICE,AMOUNT=@AMOUNT,TAX=@TAX where GID=@GID"); // db.AddInParameter(cmdUpdateInvDetail, "@PID", DbType.String, invdetailid); // db.AddInParameter(cmdUpdateInvDetail, "@TAXPRICE", DbType.Decimal, invdetailData.TAXPRICE); // db.AddInParameter(cmdUpdateInvDetail, "@PRICE", DbType.Decimal, invdetailData.PRICE); // db.AddInParameter(cmdUpdateInvDetail, "@AMOUNT", DbType.Decimal, invdetailData.AMOUNT); // db.AddInParameter(cmdUpdateInvDetail, "@TAX", DbType.Decimal, invdetailData.TAX); // db.ExecuteNonQuery(cmdUpdateInvDetail, tran); //} db.AddInParameter(cmdUpdateInv, "@REMARK", DbType.String, REMARK); db.ExecuteNonQuery(cmdUpdateInv, tran); } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功" + result.Message; return result; } public static DBResult SetInvBuyerinfoByApp(string billno, List bodyList,string USERID,string COMPANYID) { var result = new DBResult(); var head = GetData($" BILLNO='{billno}'", USERID, USERID, COMPANYID); var app = bodyList[0]; if(!string.IsNullOrWhiteSpace(app.INVOICECUSTNAME)) head.INVOICECUSTNAME = app.INVOICECUSTNAME; if (!string.IsNullOrWhiteSpace(app.CUSTRATENO)) head.CUSTRATENO = app.CUSTRATENO; if (!string.IsNullOrWhiteSpace(app.CUSTADDRTEL)) head.CUSTADDRTEL = app.CUSTADDRTEL; if (!string.IsNullOrWhiteSpace(app.CUSTBANK)) head.CUSTBANK = app.CUSTBANK; if (!string.IsNullOrWhiteSpace(app.PUSHMODE)) head.PUSHMODE = app.PUSHMODE; var modb = new ModelObjectDB(); head.DbOperationType = DbOperationType.DbotUpd; head.ModelUIStatus = "E"; result = modb.Save(head); return result; } public static DBResult AddAppDetailNew(string billno, List bodyList, string invoiceno, string companyid, string GID) { var result = new DBResult(); var invdetailDataList = GetDetailList("PID='" + GID + "'"); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdUpdatefeedo = db.GetSqlStringCommand( @" update ch_fee_do set doamount=ISNULL(doamount,0)+@stlamount,origstlamount=ISNULL(origstlamount,0)+@origstlamount where gid=@gid"); var cmdUpdateFEE = db.GetSqlStringCommand( @"UPDATE CH_FEE SET INVOICE=ISNULL(INVOICE,0)+@INVOICE,ORDERINVSETTLEMENT=ISNULL(ORDERINVSETTLEMENT,0)+@INVOICE2 WHERE GID=@GID "); var cmdUpdateInv = db.GetSqlStringCommand( @"update ch_fee_invoice set REMARK=REMARK+' '+@REMARK WHERE BILLNO=@BILLNO"); var cmdInsert = db.GetSqlStringCommand( @"insert ch_fee_do (GID,BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY ,AMOUNT,DOAMOUNT,FEETYPE,CATEGORY,BILLSTATUS,ISDELETED,CREATETIME ,EXCHANGERATE,ORIGCURRENCY,ORIGAMOUNT,INVOICESETTLENO,COMPANYID) SELECT NEWID(),@BILLNO,BSNO,MBLNO,HBLNO,CUSTOMERNAME,BSTYPE,FEEID,FEENAME,CURRENCY ,AMOUNT,DOAMOUNT,FEETYPE,7,BILLSTATUS,ISDELETED,GETDATE(),EXCHANGERATE,ORIGCURRENCY ,ORIGAMOUNT,INVOICESETTLENO,COMPANYID from ch_fee_do WHERE BILLNO=@AppBILLNO "); var cmdUpdateApp = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceapplication set BILLSTATUS=3,INVBILLNO=@INVBILLNO,INVOICENO=@INVOICENO,DOINVAMOUNT=ISNULL(DOINVAMOUNT,0)+@DOINVAMOUNT where BILLNO=@BILLNO"); var cmdInsertInvDetail = db.GetSqlStringCommand( @"insert ch_fee_invoicedetail (GID,PID,SerialNo,GOODSNAME,SPEC,UNIT,PKGS,TAXPRICE,PRICE,AMOUNT,TAXRATE,TAX,Remark,GOODCODE) values (NEWID(),@PID,@SerialNo,@GOODSNAME,@SPEC,@UNIT,@PKGS,@TAXPRICE,@PRICE,@AMOUNT,@TAXRATE,@TAX,@Remark,@GOODCODE) "); var currency = ""; decimal rate = 0; var custrateno = ""; var custaddrtel = ""; var custbank = ""; var INVOICECATEGORY = ""; var ACTUALCUSTOMERNAME = ""; var INVOICECUSTNAME = ""; var REMARK = ""; var invdetailid = ""; if (bodyList != null) { cmdUpdateInv.Parameters.Clear(); db.AddInParameter(cmdUpdateInv, "@BILLNO", DbType.String, billno); foreach (var enumValue in bodyList) { var stlamount = enumValue.STLAMOUNT; var invappdetail = ChinvoiceapplicationDAL.GetBodyList("c.BILLNO='" + enumValue.BILLNO + "'"); if (invappdetail != null) { foreach (var feedovalue in invappdetail) { decimal balamount = 0; decimal origamount = 0; if (stlamount != 0) { if ((feedovalue.AMOUNT - feedovalue.DOAMOUNT) <= stlamount) { balamount = feedovalue.AMOUNT - feedovalue.DOAMOUNT; if (feedovalue.FEETYPE == 1) stlamount = stlamount - balamount; else stlamount = stlamount + balamount; origamount = feedovalue.ORIGAMOUNT - feedovalue.ORIGSTLAMOUNT; } else { balamount = stlamount; stlamount = stlamount - balamount; origamount = balamount / feedovalue.EXCHANGERATE; } cmdUpdatefeedo.Parameters.Clear(); db.AddInParameter(cmdUpdatefeedo, "@stlamount", DbType.Decimal, balamount); db.AddInParameter(cmdUpdatefeedo, "@origstlamount", DbType.Decimal, origamount); db.AddInParameter(cmdUpdatefeedo, "@gid", DbType.String, feedovalue.FEEDOID); db.ExecuteNonQuery(cmdUpdatefeedo, tran); var feedoid = Guid.NewGuid().ToString(); cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@GID", DbType.String, feedoid); db.AddInParameter(cmdInsert, "@BILLNO", DbType.String, billno); db.AddInParameter(cmdInsert, "@BSNO", DbType.String, feedovalue.BSNO); db.AddInParameter(cmdInsert, "@MBLNO", DbType.String, feedovalue.MBLNO); db.AddInParameter(cmdInsert, "@HBLNO", DbType.String, feedovalue.HBLNO); db.AddInParameter(cmdInsert, "@CUSTOMERNAME", DbType.String, feedovalue.FEEOBJNAME); db.AddInParameter(cmdInsert, "@BSTYPE", DbType.Boolean, false); db.AddInParameter(cmdInsert, "@FEEID", DbType.String, feedovalue.FEEID); db.AddInParameter(cmdInsert, "@FEENAME", DbType.String, feedovalue.FEENAME); db.AddInParameter(cmdInsert, "@CURRENCY", DbType.String, feedovalue.CURRENCY); db.AddInParameter(cmdInsert, "@AMOUNT", DbType.Decimal, balamount); db.AddInParameter(cmdInsert, "@DOAMOUNT", DbType.Decimal, 0); db.AddInParameter(cmdInsert, "@FEETYPE", DbType.Int16, feedovalue.FEETYPE); db.AddInParameter(cmdInsert, "@CATEGORY", DbType.Int16, 7); db.AddInParameter(cmdInsert, "@BILLSTATUS", DbType.Int16, 1); db.AddInParameter(cmdInsert, "@ISDELETED", DbType.Boolean, false); db.AddInParameter(cmdInsert, "@CREATETIME", DbType.DateTime, DateTime.Now); db.AddInParameter(cmdInsert, "@EXCHANGERATE", DbType.Decimal, feedovalue.EXCHANGERATE); db.AddInParameter(cmdInsert, "@ORIGCURRENCY", DbType.String, feedovalue.ORIGCURRENCY); db.AddInParameter(cmdInsert, "@ORIGAMOUNT", DbType.Decimal, origamount); db.AddInParameter(cmdInsert, "@INVOICESETTLENO", DbType.String, ""); db.AddInParameter(cmdInsert, "@COMPANYID", DbType.String, companyid); db.ExecuteNonQuery(cmdInsert, tran); cmdUpdateFEE.Parameters.Clear(); db.AddInParameter(cmdUpdateFEE, "@GID", DbType.String, feedovalue.FEEID); db.AddInParameter(cmdUpdateFEE, "@INVOICE", DbType.Decimal, origamount); db.AddInParameter(cmdUpdateFEE, "@INVOICE2", DbType.Decimal, origamount); db.ExecuteNonQuery(cmdUpdateFEE, tran); } } } currency = enumValue.CURRENCY; rate = enumValue.RATE; custrateno = enumValue.CUSTRATENO; custaddrtel = enumValue.CUSTADDRTEL; custbank = enumValue.CUSTBANK; INVOICECATEGORY = enumValue.INVOICECATEGORY; ACTUALCUSTOMERNAME = enumValue.ACTUALCUSTOMERNAME; INVOICECUSTNAME = enumValue.INVOICECUSTNAME; REMARK = REMARK + ' ' + enumValue.REMARK; cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@BILLNO", DbType.String, billno); db.AddInParameter(cmdInsert, "@AppBILLNO", DbType.String, enumValue.BILLNO); db.ExecuteNonQuery(cmdInsert, tran); //cmdUpdate.Parameters.Clear(); //db.AddInParameter(cmdUpdate, "@AppBILLNO", DbType.String, enumValue.BILLNO); //db.AddInParameter(cmdUpdate, "@INVOICENUM", DbType.String, invoiceno); //db.ExecuteNonQuery(cmdUpdate, tran); var invdetaillist = GetDetailList("PID='" + enumValue.GID + "'", db, tran); var stlinvaount = enumValue.STLINVAMOUNT; if (invdetaillist != null) { foreach (var enumInvDetail in invdetaillist) { if (stlinvaount != 0) { bool ishave = false; if (enumInvDetail.AMOUNT <= stlinvaount) { stlinvaount = stlinvaount - enumInvDetail.AMOUNT; if (invdetailDataList != null) { foreach (var invdetailData in invdetailDataList) { if (invdetailData.GOODSNAME == enumInvDetail.GOODSNAME) { invdetailData.TAXPRICE = invdetailData.TAXPRICE + enumInvDetail.TAXPRICE; invdetailData.PRICE = invdetailData.PRICE + enumInvDetail.PRICE; invdetailData.AMOUNT = invdetailData.AMOUNT + enumInvDetail.AMOUNT; invdetailData.TAX = invdetailData.TAX + enumInvDetail.TAX; ishave = true; } } } if (!ishave) { var invdetailtmp = enumInvDetail; invdetailtmp.GID = "*"; invdetailtmp.PID = GID; invdetailDataList.Add(invdetailtmp); } } else { if (invdetailDataList != null) { foreach (var invdetailData in invdetailDataList) { if (invdetailData.GOODSNAME == enumInvDetail.GOODSNAME) { invdetailData.TAXPRICE = invdetailData.TAXPRICE + enumInvDetail.TAXPRICE * (stlinvaount / enumInvDetail.AMOUNT); invdetailData.PRICE = invdetailData.PRICE + enumInvDetail.PRICE * (stlinvaount / enumInvDetail.AMOUNT); invdetailData.AMOUNT = invdetailData.AMOUNT + stlinvaount; invdetailData.TAX = invdetailData.TAX + enumInvDetail.TAX * (stlinvaount / enumInvDetail.AMOUNT); ishave = true; } } } if (!ishave) { var invdetailtmp = enumInvDetail; invdetailtmp.GID = "*"; invdetailtmp.PID = GID; invdetailtmp.TAXPRICE = enumInvDetail.TAXPRICE * (stlinvaount / enumInvDetail.AMOUNT); invdetailtmp.PRICE = enumInvDetail.PRICE * (stlinvaount / enumInvDetail.AMOUNT); invdetailtmp.AMOUNT = stlinvaount; invdetailtmp.TAX = enumInvDetail.TAX * (stlinvaount / enumInvDetail.AMOUNT); invdetailDataList.Add(invdetailtmp); } stlinvaount = 0; } } } } cmdUpdateApp.Parameters.Clear(); db.AddInParameter(cmdUpdateApp, "@INVBILLNO", DbType.String, billno); db.AddInParameter(cmdUpdateApp, "@INVOICENO", DbType.String, invoiceno); db.AddInParameter(cmdUpdateApp, "@DOINVAMOUNT", DbType.Decimal, enumValue.DOINVAMOUNT); db.AddInParameter(cmdUpdateApp, "@BILLNO", DbType.String, enumValue.BILLNO); db.ExecuteNonQuery(cmdUpdateApp, tran); } if (invdetailDataList != null) { foreach (var invdetailData in invdetailDataList) { if (invdetailData.GID == "*") { cmdInsertInvDetail.Parameters.Clear(); db.AddInParameter(cmdInsertInvDetail, "@PID", DbType.String, GID); db.AddInParameter(cmdInsertInvDetail, "@SerialNo", DbType.Decimal, 1); db.AddInParameter(cmdInsertInvDetail, "@GOODSNAME", DbType.String, invdetailData.GOODSNAME); db.AddInParameter(cmdInsertInvDetail, "@SPEC", DbType.String, invdetailData.SPEC); db.AddInParameter(cmdInsertInvDetail, "@UNIT", DbType.String, invdetailData.UNIT); db.AddInParameter(cmdInsertInvDetail, "@PKGS", DbType.Decimal, invdetailData.PKGS); db.AddInParameter(cmdInsertInvDetail, "@TAXPRICE", DbType.Decimal, invdetailData.TAXPRICE); db.AddInParameter(cmdInsertInvDetail, "@PRICE", DbType.Decimal, invdetailData.PRICE); db.AddInParameter(cmdInsertInvDetail, "@AMOUNT", DbType.Decimal, invdetailData.AMOUNT); db.AddInParameter(cmdInsertInvDetail, "@TAX", DbType.Decimal, invdetailData.TAX); db.AddInParameter(cmdInsertInvDetail, "@TAXRATE", DbType.Decimal, invdetailData.TAXRATE); db.AddInParameter(cmdInsertInvDetail, "@Remark", DbType.String, ""); db.AddInParameter(cmdInsertInvDetail, "@GOODCODE", DbType.String, invdetailData.GOODCODE); db.ExecuteNonQuery(cmdInsertInvDetail, tran); } else { var cmdUpdateInvDetail = db.GetSqlStringCommand( @"UPDATE ch_fee_invoicedetail set TAXPRICE=@TAXPRICE,PRICE=@PRICE,AMOUNT=@AMOUNT,TAX=@TAX where GID=@GID"); db.AddInParameter(cmdUpdateInvDetail, "@GID", DbType.String, invdetailData.GID); db.AddInParameter(cmdUpdateInvDetail, "@TAXPRICE", DbType.Decimal, invdetailData.TAXPRICE); db.AddInParameter(cmdUpdateInvDetail, "@PRICE", DbType.Decimal, invdetailData.PRICE); db.AddInParameter(cmdUpdateInvDetail, "@AMOUNT", DbType.Decimal, invdetailData.AMOUNT); db.AddInParameter(cmdUpdateInvDetail, "@TAX", DbType.Decimal, invdetailData.TAX); db.ExecuteNonQuery(cmdUpdateInvDetail, tran); } } } //if (invdetailid == string.Empty) //{ // cmdInsertInvDetail.Parameters.Clear(); // db.AddInParameter(cmdInsertInvDetail, "@PID", DbType.String, GID); // db.AddInParameter(cmdInsertInvDetail, "@SerialNo", DbType.Decimal, 1); // db.AddInParameter(cmdInsertInvDetail, "@GOODSNAME", DbType.String, invdetailData.GOODSNAME); // db.AddInParameter(cmdInsertInvDetail, "@SPEC", DbType.String, invdetailData.SPEC); // db.AddInParameter(cmdInsertInvDetail, "@UNIT", DbType.String, invdetailData.UNIT); // db.AddInParameter(cmdInsertInvDetail, "@PKGS", DbType.Decimal, invdetailData.PKGS); // db.AddInParameter(cmdInsertInvDetail, "@TAXPRICE", DbType.Decimal, invdetailData.TAXPRICE); // db.AddInParameter(cmdInsertInvDetail, "@PRICE", DbType.Decimal, invdetailData.PRICE); // db.AddInParameter(cmdInsertInvDetail, "@AMOUNT", DbType.Decimal, invdetailData.AMOUNT); // db.AddInParameter(cmdInsertInvDetail, "@TAX", DbType.Decimal, invdetailData.TAX); // db.AddInParameter(cmdInsertInvDetail, "@TAXRATE", DbType.Decimal, invdetailData.TAXRATE); // db.AddInParameter(cmdInsertInvDetail, "@Remark", DbType.String, ""); // db.AddInParameter(cmdInsertInvDetail, "@GOODCODE", DbType.String, invdetailData.GOODCODE); // db.ExecuteNonQuery(cmdInsertInvDetail, tran); //} //else { // var cmdUpdateInvDetail = // db.GetSqlStringCommand( // @"UPDATE ch_fee_invoicedetail set TAXPRICE=@TAXPRICE,PRICE=@PRICE,AMOUNT=@AMOUNT,TAX=@TAX where GID=@GID"); // db.AddInParameter(cmdUpdateInvDetail, "@PID", DbType.String, invdetailid); // db.AddInParameter(cmdUpdateInvDetail, "@TAXPRICE", DbType.Decimal, invdetailData.TAXPRICE); // db.AddInParameter(cmdUpdateInvDetail, "@PRICE", DbType.Decimal, invdetailData.PRICE); // db.AddInParameter(cmdUpdateInvDetail, "@AMOUNT", DbType.Decimal, invdetailData.AMOUNT); // db.AddInParameter(cmdUpdateInvDetail, "@TAX", DbType.Decimal, invdetailData.TAX); // db.ExecuteNonQuery(cmdUpdateInvDetail, tran); //} db.AddInParameter(cmdUpdateInv, "@REMARK", DbType.String, REMARK); db.ExecuteNonQuery(cmdUpdateInv, tran); } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功" + result.Message; return result; } public static DBResult DelAppList(List boday, string billno) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { if (boday != null) { var cmddelete = db.GetSqlStringCommand("delete from ch_fee_do where BILLNO=@BILLNO AND FEEID IN (SELECT FEEID FROM CH_FEE_DO WHERE BILLNO=@AppBILLNO)"); var cmdUpdate = db.GetSqlStringCommand( @"declare @FEEID varchar(100) declare @ORDERINVOICE numeric(19,4) declare CurBill cursor for select FEEID,ORIGAMOUNT from ch_fee_do where BILLNO=@AppBILLNO open CurBill fetch next from CurBill into @FEEID, @ORDERINVOICE while @@Fetch_Status=0 begin UPDATE CH_FEE SET INVOICE=ISNULL(INVOICE,0)-@ORDERINVOICE,ORDERINVSETTLEMENT=ISNULL(ORDERINVSETTLEMENT,0)-@ORDERINVOICE,INVOICENUM='' WHERE GID=@FEEID fetch next from CurBill into @FEEID, @ORDERINVOICE end; close CurBill dealLocate CurBill "); var cmdUpdateApp = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceapplication set BILLSTATUS=0,INVBILLNO='',INVOICENO='' where BILLNO=@AppBILLNO"); foreach (var enumValue in boday) { cmddelete.Parameters.Clear(); db.AddInParameter(cmddelete, "@BILLNO", DbType.String, billno); db.AddInParameter(cmddelete, "@AppBILLNO", DbType.String, enumValue.BILLNO); db.ExecuteNonQuery(cmddelete, tran); cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@AppBILLNO", DbType.String, enumValue.BILLNO); db.ExecuteNonQuery(cmdUpdate, tran); cmdUpdateApp.Parameters.Clear(); db.AddInParameter(cmdUpdateApp, "@AppBILLNO", DbType.String, enumValue.BILLNO); db.ExecuteNonQuery(cmdUpdateApp, tran); } } result = new DBResult(); result.Success = true; result.Message = "成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功"; return result; } #endregion public static DBResult UpdateInvNoDelete(string billno, string userid, bool isdelete = true) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdUpdate = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceitems set ISDELETE=1,DELETEUSER=@DELETEUSER,DELETETIME=@DELETETIME where INVOICENUM=@BILLNO"); var cmdUpdate2 = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceitems set ISDELETE=0 where INVOICENUM=@BILLNO"); if (billno.Length > 8) { cmdUpdate = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceitems set ISDELETE=1,DELETEUSER=@DELETEUSER,DELETETIME=@DELETETIME where FROM ch_fee_invoiceitems I LEFT JOIN ch_fee_invoicebooks B ON (B.GID=I.BOOKID) where B.INVOICECODE+I.INVOICENUM=@BILLNO"); cmdUpdate2 = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceitems set ISDELETE=0 where FROM ch_fee_invoiceitems I LEFT JOIN ch_fee_invoicebooks B ON (B.GID=I.BOOKID) where B.INVOICECODE+I.INVOICENUM=@BILLNO"); } if (isdelete) { cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@BILLNO", DbType.String, billno); db.AddInParameter(cmdUpdate, "@DELETEUSER", DbType.String, billno); db.AddInParameter(cmdUpdate, "@DELETETIME", DbType.String, DateTime.Now); db.ExecuteNonQuery(cmdUpdate, tran); } else { cmdUpdate2.Parameters.Clear(); db.AddInParameter(cmdUpdate2, "@BILLNO", DbType.String, billno); db.ExecuteNonQuery(cmdUpdate2, tran); } result = new DBResult(); result.Success = true; result.Message = "成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功"; return result; } public static DBResult UpdateInvNoUse(string billno, string userid, string invbillno) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { if (invbillno != "") { var cmdUpdate2 = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceitems set ISMAKEOUT=0,MAKEOUTUSER='',MAKEOUTTIME=null,BILLNO='' where BILLNO=@BILLNO"); cmdUpdate2.Parameters.Clear(); db.AddInParameter(cmdUpdate2, "@BILLNO", DbType.String, invbillno); db.ExecuteNonQuery(cmdUpdate2, tran); } var cmdUpdate = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceitems set ISMAKEOUT=1,MAKEOUTUSER=@DELETEUSER,MAKEOUTTIME=@DELETETIME,BILLNO=@INVBILLNO where INVOICENUM=@BILLNO"); if (billno.Length > 8) { cmdUpdate = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceitems set ISMAKEOUT=1,MAKEOUTUSER=@DELETEUSER,MAKEOUTTIME=@DELETETIME,BILLNO=@INVBILLNO FROM ch_fee_invoiceitems I LEFT JOIN ch_fee_invoicebooks B ON (B.GID=I.BOOKID) where B.INVOICECODE+I.INVOICENUM=@BILLNO"); } cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@BILLNO", DbType.String, billno); db.AddInParameter(cmdUpdate, "@INVBILLNO", DbType.String, invbillno); db.AddInParameter(cmdUpdate, "@DELETEUSER", DbType.String, billno); db.AddInParameter(cmdUpdate, "@DELETETIME", DbType.String, DateTime.Now); db.ExecuteNonQuery(cmdUpdate, tran); result = new DBResult(); result.Success = true; result.Message = "成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功"; return result; } public static DBResult UpdateInvNoCancelUse(string billno) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdUpdate = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceitems set ISMAKEOUT=0,MAKEOUTUSER='',MAKEOUTTIME=null,BILLNO='' where INVOICENUM=@BILLNO"); if (billno.Length > 8) { cmdUpdate = db.GetSqlStringCommand( @"UPDATE ch_fee_invoiceitems set ISMAKEOUT=0,MAKEOUTUSER='',MAKEOUTTIME=null,BILLNO='' FROM ch_fee_invoiceitems I LEFT JOIN ch_fee_invoicebooks B ON (B.GID=I.BOOKID) where B.INVOICECODE+I.INVOICENUM=@BILLNO"); } cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@BILLNO", DbType.String, billno); db.ExecuteNonQuery(cmdUpdate, tran); result = new DBResult(); result.Success = true; result.Message = "成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功"; return result; } public static DBResult UpdatePrint(string billno) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdUpdate = db.GetSqlStringCommand( @"UPDATE ch_fee_invoice set ISNEEDPRINT=1 where BILLNO=@BILLNO"); cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@BILLNO", DbType.String, billno); db.ExecuteNonQuery(cmdUpdate, tran); result = new DBResult(); result.Success = true; result.Message = "成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功"; return result; } public static DBResult UpdateDelete(string billno, string userid, bool isdelete = true) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdUpdate = db.GetSqlStringCommand( @"UPDATE ch_fee_invoice set ISDELETE=1,DELETEOPERATOR=@DELETEOPERATOR,DELETETIME=@DELETETIME where BILLNO=@BILLNO"); var cmdUpdate2 = db.GetSqlStringCommand( @"UPDATE ch_fee_invoice set ISDELETE=0 where BILLNO=@BILLNO"); if (isdelete) { cmdUpdate.Parameters.Clear(); db.AddInParameter(cmdUpdate, "@DELETEOPERATOR", DbType.String, userid); db.AddInParameter(cmdUpdate, "@DELETETIME", DbType.DateTime, DateTime.Now); db.AddInParameter(cmdUpdate, "@BILLNO", DbType.String, billno); db.ExecuteNonQuery(cmdUpdate, tran); } else { cmdUpdate2.Parameters.Clear(); db.AddInParameter(cmdUpdate2, "@BILLNO", DbType.String, billno); db.ExecuteNonQuery(cmdUpdate2, tran); } result = new DBResult(); result.Success = true; result.Message = "成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功"; return result; } static public int GetRdCount(string strCondition) { var strSql = new StringBuilder(); strSql.Append("SELECT Count(GID) AS CT from ch_fee_invoice (NOLOCK) "); if (strCondition.Trim() != String.Empty) { strSql.Append(" where " + strCondition); } var ct = 0; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { ct = Convert.ToInt16(reader["CT"]); } reader.Close(); } return ct; } #region 提交审核和撤销审核 public static DBResult Lock(String bill, string userid) { var result = new DBResult(); var INVLOCKFEEAUTOAUDIT = MsSysParamSetDAL.GetData("PARAMNAME='INVLOCKFEEAUTOAUDIT'").PARAMVALUE; Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdupdate = db.GetSqlStringCommand("update ch_fee_invoice set BILLSTATUS=1,APPLICANT='" + userid + "',APPLYTIME=GETDATE() where BILLNO=@BILLNO"); cmdupdate.Parameters.Clear(); db.AddInParameter(cmdupdate, "@BILLNO", DbType.String, bill); db.ExecuteNonQuery(cmdupdate, tran); if (INVLOCKFEEAUTOAUDIT == "1") { var cmdupdatefee = db.GetSqlStringCommand("update ch_fee set FEESTATUS=0 where FEESTATUS in (1,2) and GID IN (SELECT FEEID FROM CH_FEE_DO WHERE BILLNO=@BILLNO)"); cmdupdatefee.Parameters.Clear(); db.AddInParameter(cmdupdatefee, "@BILLNO", DbType.String, bill); db.ExecuteNonQuery(cmdupdatefee, tran); } result = new DBResult(); result.Success = true; result.Message = "锁定成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "锁定错误,请重试或联系系统管理员"; return result; } } return result; } public static DBResult LockList(String bills, string userid) { var result = new DBResult(); var billList = bills.Split(','); var INVLOCKFEEAUTOAUDIT = MsSysParamSetDAL.GetData("PARAMNAME='INVLOCKFEEAUTOAUDIT'").PARAMVALUE; Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { foreach (var bill in billList) { var cmdupdate = db.GetSqlStringCommand("update ch_fee_invoice set BILLSTATUS=1,APPLICANT='" + userid + "',APPLYTIME=GETDATE() where BILLNO=@BILLNO"); cmdupdate.Parameters.Clear(); db.AddInParameter(cmdupdate, "@BILLNO", DbType.String, bill); db.ExecuteNonQuery(cmdupdate, tran); if (INVLOCKFEEAUTOAUDIT == "1") { var cmdupdatefee = db.GetSqlStringCommand("update ch_fee set FEESTATUS=0 where FEESTATUS in (1,2) and GID IN (SELECT FEEID FROM CH_FEE_DO WHERE BILLNO=@BILLNO)"); cmdupdatefee.Parameters.Clear(); db.AddInParameter(cmdupdatefee, "@BILLNO", DbType.String, bill); db.ExecuteNonQuery(cmdupdatefee, tran); } result = new DBResult(); result.Success = true; result.Message = "锁定成功"; } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "锁定错误,请重试或联系系统管理员"; return result; } } return result; } public static DBResult UnLock(String bill, string userid) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdupdate = db.GetSqlStringCommand("update ch_fee_invoice set BILLSTATUS=0 where BILLNO=@BILLNO"); cmdupdate.Parameters.Clear(); db.AddInParameter(cmdupdate, "@BILLNO", DbType.String, bill); db.ExecuteNonQuery(cmdupdate, tran); result = new DBResult(); result.Success = true; result.Message = "撤销锁定成功"; var cmdupdate2 = db.GetSqlStringCommand("insert into sys_log(GID,NAME,LOGTYPE,LOGTIME,LOGCONTENT,CREATEUSER) select NEWID(),'" + bill + "','撤销发票锁定',getdate(),INVOICENO+'('+CUSTOMERNAME+')','" + userid + "' from ch_fee_invoice where BILLNO=@BILLNO"); cmdupdate2.Parameters.Clear(); db.AddInParameter(cmdupdate2, "@BILLNO", DbType.String, bill); db.ExecuteNonQuery(cmdupdate2, tran); tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "撤销锁定错误,请重试或联系系统管理员"; return result; } } return result; } public static DBResult UnLockList(String bills, string userid) { var result = new DBResult(); var billList = bills.Split(','); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); try { foreach (var bill in billList) { var cmdupdate = db.GetSqlStringCommand("update ch_fee_invoice set BILLSTATUS=0 where BILLNO=@BILLNO"); cmdupdate.Parameters.Clear(); db.AddInParameter(cmdupdate, "@BILLNO", DbType.String, bill); db.ExecuteNonQuery(cmdupdate, tran); var cmdupdate2 = db.GetSqlStringCommand("insert into sys_log(GID,NAME,LOGTYPE,LOGTIME,LOGCONTENT,CREATEUSER) select NEWID(),'" + bill + "','撤销发票锁定',getdate(),INVOICENO+'('+CUSTOMERNAME+')','" + userid + "' from ch_fee_invoice where BILLNO=@BILLNO"); cmdupdate2.Parameters.Clear(); db.AddInParameter(cmdupdate2, "@BILLNO", DbType.String, bill); db.ExecuteNonQuery(cmdupdate2, tran); result = new DBResult(); result.Success = true; result.Message = "撤销锁定成功"; } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "撤销锁定错误,请重试或联系系统管理员"; return result; } } return result; } public static string GetTelephoneList(string input) { //集合存放提取出来的电话号码 /* * 正则表达式提取 * 分为五种格式,能兼容11位手机号、3位或4位区号-7位或8位电话号、400电话的两种写法(400-ddd-dddd、400ddddddd) */ Regex regex = new Regex(@"(1[3|4|5|6|7|8|9]\d{9})|(0\d{2,3}-\d{7,8})"); //Match集合,匹配成功的字符串集合 MatchCollection collection = regex.Matches(input); //遍历Match集合,取出值 string telephone = ""; foreach (System.Text.RegularExpressions.Match item in collection) { foreach (Group group in item.Groups) { if (!string.IsNullOrEmpty(group.Value)) telephone = group.Value.Trim(); ////偶尔会出现重复提取,所以加了去重判断 //if (!string.IsNullOrEmpty(telephone) && !list.Contains(telephone)) //{ // list.Add(telephone); //} } } return telephone; } public static DBResult UpInvListDZStauts(List invlist, string dzstatus) { var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); try { foreach (var bill in invlist) { var cmdupdate = db.GetSqlStringCommand("update ch_fee_invoice set DZSTATUS='" + dzstatus + "' where BILLNO=@BILLNO"); cmdupdate.Parameters.Clear(); db.AddInParameter(cmdupdate, "@BILLNO", DbType.String, bill.BILLNO); db.ExecuteNonQuery(cmdupdate, tran); result.Success = true; result.Message = "撤销锁定成功"; } tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "撤销锁定错误,请重试或联系系统管理员"; return result; } } return result; } #endregion #region 发票被冲红处理 public static DBResult SetRed(ChInvoice_HangXin head) { //找到【红票head】所对应的蓝票,将其setred设为true var result = new DBResult(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdupdate = db.GetSqlStringCommand("update ch_fee_invoice set SETRED=@SETRED ,BILLSTATUS=1 where INVOICECODE='" + head.REDCODE + "' and INVOICENO='" + head.REDNUM + "'"); cmdupdate.Parameters.Clear(); db.AddInParameter(cmdupdate, "@SETRED", DbType.Int16, 1); db.ExecuteNonQuery(cmdupdate, tran); result = new DBResult(); result.Success = true; result.Message = "冲红成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "冲红错误,请重试或联系系统管理员"; return result; } } return result; } #endregion #region 发票模板 public static DBResult GetRemarksTemplate(string companyid, string templatename = "") { var result = new DBResult(); if (templatename == "" || templatename == null) { templatename = "发票备注"; }; string str = ""; var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(" TEMPLATE "); strSql.Append(" from sys_template "); strSql.Append(" where TEMPLATETYPE='" + templatename + "' and COMPANYID='" + companyid + "'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { result.Success = true; result.Data = Convert.ToString(reader["TEMPLATE"]); break; } reader.Close(); } return result; } public static DBResult SaveRemarksTemplate(string Template, string companyid, string templatename = "") { var result = new DBResult(); if (templatename == "" || templatename == null) { templatename = "发票备注"; }; Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { var cmdDelete = db.GetSqlStringCommand( @"delete from sys_template where TEMPLATETYPE='" + templatename + "' and COMPANYID='" + companyid + "'"); db.ExecuteNonQuery(cmdDelete, tran); var cmdInsert = db.GetSqlStringCommand( @"insert into sys_template (GID,TEMPLATE,TEMPLATETYPE,COMPANYID) values (@GID,@TEMPLATE,@TEMPLATETYPE,@COMPANYID) "); cmdInsert.Parameters.Clear(); db.AddInParameter(cmdInsert, "@GID", DbType.String, Guid.NewGuid().ToString()); db.AddInParameter(cmdInsert, "@TEMPLATE", DbType.String, Template); db.AddInParameter(cmdInsert, "@TEMPLATETYPE", DbType.String, templatename); db.AddInParameter(cmdInsert, "@COMPANYID", DbType.String, companyid); db.ExecuteNonQuery(cmdInsert, tran); result = new DBResult(); result.Success = true; result.Message = "成功"; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功"; return result; } public static DBResult GetRemarksData(List bodyList, string companyid, string billno, string templatename = "") { var result = new DBResult(); if (templatename == "" || templatename == null) { templatename = "发票备注"; }; string templatestr = ""; var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(" TEMPLATE "); strSql.Append(" from sys_template "); strSql.Append(" where TEMPLATETYPE='" + templatename + "' and COMPANYID='" + companyid + "'"); Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { templatestr = Convert.ToString(reader["TEMPLATE"]); break; } reader.Close(); } if (templatestr == "") { result.Success = false; result.Message = "请先设置发票提取模板!"; return result; } T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); DataSet dsUserOp = T_ALL_DA.GetAllSQL("select top 1 CONVERT(DECIMAL(18,4),EXCHANGERATE) as EXCHANGERATE from ch_fee_do where ORIGCURRENCY<>'RMB' AND BILLNO='" + billno + "'"); var cdc = new DSWeb.Common.DB.CommonDataContext(); var head = cdc.ch_fee_invoice.FirstOrDefault(x => x.BILLNO == billno); decimal rmbttl = 0; decimal usdttl = 0; decimal Allrmbttl = 0; decimal Allusdttl = 0; var str = templatestr; var strl = ""; str = str.Replace("\r\n", "\\"); str = str.Replace("\n", "\\"); str = str.Replace("\r", " "); var custbank = ""; var custaccount = ""; string[] custbanklist = head.CUSTBANK.Trim().Split(' '); if (custbanklist.Length == 2) { custbank = custbanklist[0]; custaccount = custbanklist[1]; } string[] StrList = str.Split('\\'); using (var conn = db.CreateConnection()) { conn.Open(); var tran = conn.BeginTransaction(); try { if (bodyList != null) { foreach (var enumValue in bodyList) { usdttl = 0; rmbttl = 0; rmbttl = enumValue.AMOUNT; if (enumValue.ORIGCURRENCY != "RMB") { usdttl = enumValue.ORIGAMOUNT; Allusdttl = Allusdttl + usdttl; } Allrmbttl = Allrmbttl + rmbttl; for (var i = 0; i <= StrList.Length - 1; i++) { str = StrList[i]; if (str.IndexOf("[外币金额(总计)]") < 0 && str.IndexOf("[购方银行]") < 0 && str.IndexOf("[购方账号]") < 0 && str.IndexOf("[销方银行]") < 0 && str.IndexOf("[人民币金额(总计)]") < 0 && str.IndexOf("[折算汇率(总计)]") < 0) { str = str.Replace("[委托编号]", enumValue.CUSTNO); str = str.Replace("[主提单号]", enumValue.MBLNO); str = str.Replace("[委托单位]", enumValue.CUSTOMERNAME); str = str.Replace("[开船日期]", enumValue.ETD); str = str.Replace("[揽货人]", enumValue.SALE); str = str.Replace("[船名]", enumValue.VESSEL); str = str.Replace("[航次]", enumValue.VOYNO); str = str.Replace("[装货港]", enumValue.PORTLOAD); str = str.Replace("[卸货港]", enumValue.PORTDISCHARGE); str = str.Replace("[目的港]", enumValue.DESTINATION); str = str.Replace("[购方银行]", ""); str = str.Replace("[购方账号]", ""); str = str.Replace("[销方银行]", ""); str = str.Replace("[外币金额]", usdttl.ToString("#0.00")); str = str.Replace("[人民币金额]", rmbttl.ToString("#0.00")); if (dsUserOp != null) str = str.Replace("[折算汇率]", dsUserOp.Tables[0].Rows[0]["EXCHANGERATE"].ToString().Trim()); else str = str.Replace("[折算汇率]", ""); str = str.Replace("[外币金额(总计)]", ""); str = str.Replace("[人民币金额(总计)]", ""); str = str.Replace("[折算汇率(总计)]", ""); str = str.Replace("[总计]", ""); //if (strl == "") strl = str + Environment.NewLine; //else strl = strl + str + Environment.NewLine; if (strl == "") strl = str + " "; else strl = strl + str + " "; } } //rmbttl = rmbttl + enumValue.AMOUNT; //if (enumValue.ORIGCURRENCY != "RMB") // usdttl = usdttl + enumValue.ORIGAMOUNT; } } for (var i = 0; i <= StrList.Length - 1; i++) { str = StrList[i]; if (str.IndexOf("[购方银行]") >= 0 || str.IndexOf("[购方账号]") >= 0 || str.IndexOf("[销方银行]") >= 0 || str.IndexOf("[外币金额(总计)]") >= 0 || str.IndexOf("[外币金额(总计)]") >= 0 || str.IndexOf("[外币金额(总计)]") >= 0 || str.IndexOf("[外币金额(总计)]") >= 0 || str.IndexOf("[人民币金额(总计)]") >= 0 || str.IndexOf("[折算汇率(总计)]") >= 0) { str = str.Replace("[委托编号]", ""); str = str.Replace("[主提单号]", ""); str = str.Replace("[委托单位]", ""); str = str.Replace("[开船日期]", ""); str = str.Replace("[揽货人]", ""); str = str.Replace("[船名]", ""); str = str.Replace("[航次]", ""); str = str.Replace("[装货港]", ""); str = str.Replace("[卸货港]", ""); str = str.Replace("[目的港]", ""); str = str.Replace("[外币金额]", ""); str = str.Replace("[人民币金额]", ""); str = str.Replace("[折算汇率]", ""); str = str.Replace("[购方银行]", custbank); str = str.Replace("[购方账号]", custaccount); str = str.Replace("[销方银行]", head.ACCOUNT); str = str.Replace("[外币金额(总计)]", Allusdttl.ToString("#0.00")); str = str.Replace("[人民币金额(总计)]", Allrmbttl.ToString("#0.00")); if (dsUserOp != null) str = str.Replace("[折算汇率(总计)]", dsUserOp.Tables[0].Rows[0]["EXCHANGERATE"].ToString().Trim()); else str = str.Replace("[折算汇率(总计)]", ""); if (str.Trim() != "") strl = strl + str + " "; } } result.Data = result.Data + strl; tran.Commit(); } catch (Exception) { tran.Rollback(); result.Success = false; result.Message = "保存出现错误,请重试或联系系统管理员"; return result; } } result.Success = true; result.Message = "保存成功" + result.Message; return result; } #endregion #region 导出发票 public static string CreateInvList(List headList, string path) { var opBill = headList[0]; string filename = path + "\\" + headList[0].INVOICENO.ToString() + "-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xml"; if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } FileStream f = new FileStream(filename, FileMode.Create); StreamWriter r = new StreamWriter(f, Encoding.Default); var goodcode = ""; var skr = ""; var INVSKR = MsSysParamSetDAL.GetData("PARAMNAME='INVSKR'"); if (INVSKR.PARAMVALUE != "") skr = INVSKR.PARAMVALUE; var fhr = ""; var INVFHR = MsSysParamSetDAL.GetData("PARAMNAME='INVFHR'"); if (INVFHR.PARAMVALUE != "") fhr = INVFHR.PARAMVALUE; var INVEXPLOCK = MsSysParamSetDAL.GetData("PARAMNAME='INVEXPLOCK'"); T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); r.WriteLine(""); r.WriteLine(""); r.WriteLine("2.0"); r.WriteLine(""); r.WriteLine("" + headList.Count + ""); r.WriteLine(""); foreach (var bill in headList) { r.WriteLine(""); r.WriteLine("" + bill.BILLNO + ""); r.WriteLine("" + bill.INVOICECUSTNAME + ""); r.WriteLine("" + bill.CUSTRATENO + ""); r.WriteLine("" + bill.CUSTBANK + ""); r.WriteLine("" + bill.CUSTADDRTEL + ""); r.WriteLine("" + bill.REMARK + ""); r.WriteLine("" + bill.OPERATORNAME + ""); r.WriteLine("" + fhr + ""); r.WriteLine("" + skr + ""); r.WriteLine("12.0"); if (bill.EXCHANGERATE == 0) r.WriteLine("0"); else r.WriteLine("1"); r.WriteLine(""); var invdetaillist = GetDetailList("PID='" + bill.GID + "'"); var invno = 1; foreach (var invdetail in invdetaillist) { r.WriteLine(""); r.WriteLine("" + invno.ToString() + ""); r.WriteLine("" + invdetail.GOODSNAMEREF + ""); r.WriteLine("" + invdetail.SPEC + ""); r.WriteLine("" + invdetail.UNIT + ""); var defGOOD = MsCodeGoodInvDAL.GetData(" GID='" + invdetail.GOODSNAME + "' "); r.WriteLine("" + defGOOD.GOODCODE + ""); r.WriteLine("" + defGOOD.TAXCLASS + ""); r.WriteLine("" + defGOOD.ISUSEPREF + ""); r.WriteLine("" + defGOOD.ZTAXTYPE + ""); r.WriteLine("" + defGOOD.DEFREMARK + ""); r.WriteLine("" + Math.Round(invdetail.PRICE, 2).ToString() + ""); r.WriteLine("" + Math.Round(invdetail.PKGS, 0).ToString() + ""); r.WriteLine("" + Math.Round(invdetail.AMOUNT, 2).ToString() + ""); r.WriteLine("" + Math.Round((invdetail.TAXRATE / 100), 2).ToString() + ""); r.WriteLine("0"); r.WriteLine(""); invno++; } r.WriteLine(""); r.WriteLine(""); if (INVEXPLOCK.PARAMVALUE == "1") { var blUpSQL = "update ch_fee_invoice set BILLSTATUS=1 where BILLNO='" + bill.BILLNO + "' "; bool bl = T_ALL_DA.GetExecuteSqlCommand(blUpSQL); } } r.WriteLine(""); r.WriteLine(""); r.WriteLine(""); r.Close(); f.Close(); return filename; } public static string CreateDZInvList(List headList, string path, string companyid) { var opBill = headList[0]; string filename = path + "\\" + headList[0].INVOICENO.ToString() + "-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xml"; if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } FileStream f = new FileStream(filename, FileMode.Create); StreamWriter r = new StreamWriter(f, Encoding.Default); var goodcode = ""; var skr = ""; var INVSKR = MsSysParamSetDAL.GetData("PARAMNAME='INVSKR'"); if (INVSKR.PARAMVALUE != "") skr = INVSKR.PARAMVALUE; var fhr = ""; var INVFHR = MsSysParamSetDAL.GetData("PARAMNAME='INVFHR'"); if (INVFHR.PARAMVALUE != "") fhr = INVFHR.PARAMVALUE; var INVEXPLOCK = MsSysParamSetDAL.GetData("PARAMNAME='INVEXPLOCK'"); T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); decimal hjse = 0; decimal hjje = 0; r.WriteLine(""); r.WriteLine(""); foreach (var bill in headList) { r.WriteLine(""); var invdetaillist = GetDetailList("PID='" + bill.GID + "'"); foreach (var invdetail1 in invdetaillist) { hjse = hjse + invdetail1.TAX; } hjje = bill.INVAMOUNT - hjse; r.WriteLine(""); r.WriteLine("" + bill.BILLNO + ""); r.WriteLine("0"); r.WriteLine("33.0"); var company = MsCompanysDAL.GetNoPicData("GID='" + companyid + "'"); r.WriteLine("" + company.TAXCODE + ""); r.WriteLine("" + company.BILLRISES + ""); r.WriteLine("" + company.ADDRESS + ""); r.WriteLine(""); r.WriteLine("" + bill.CUSTRATENO + ""); r.WriteLine("" + bill.INVOICECUSTNAME + ""); r.WriteLine("" + bill.CUSTADDRTEL + ""); r.WriteLine("" + bill.CUSTBANK + ""); r.WriteLine("" + bill.OPERATORNAME + ""); r.WriteLine("" + fhr + ""); r.WriteLine("" + skr + ""); r.WriteLine(""); r.WriteLine(""); r.WriteLine("" + bill.INVAMOUNT + ""); r.WriteLine("" + hjje + ""); r.WriteLine("" + hjse + ""); if (hjse == 0) r.WriteLine("0"); else r.WriteLine("1"); r.WriteLine("" + bill.REMARK + ""); r.WriteLine(""); r.WriteLine(""); var invno = 1; foreach (var invdetail in invdetaillist) { var defGOOD = MsCodeGoodInvDAL.GetData(" GID='" + invdetail.GOODSNAME + "' "); r.WriteLine(""); r.WriteLine("0"); r.WriteLine("" + defGOOD.GOODCODE + ""); r.WriteLine("" + defGOOD.GOODCODE + ""); if (defGOOD.ISUSEPREF == "1") r.WriteLine("1"); else r.WriteLine("0"); r.WriteLine("1"); r.WriteLine(""); r.WriteLine("" + invdetail.GOODSNAMEREF + ""); r.WriteLine("" + invdetail.SPEC + ""); r.WriteLine("" + invdetail.UNIT + ""); r.WriteLine("" + Math.Round(invdetail.PKGS, 0).ToString() + ""); r.WriteLine("" + Math.Round(invdetail.PRICE, 2).ToString() + ""); r.WriteLine("" + Math.Round(invdetail.AMOUNT, 2).ToString() + ""); r.WriteLine("" + Math.Round((invdetail.TAXRATE / 100), 2).ToString() + ""); r.WriteLine("" + Math.Round(invdetail.TAX, 2).ToString() + ""); r.WriteLine("0"); r.WriteLine(""); invno++; } r.WriteLine(""); if (INVEXPLOCK.PARAMVALUE == "1") { var blUpSQL = "update ch_fee_invoice set BILLSTATUS=1 where BILLNO='" + bill.BILLNO + "' "; bool bl = T_ALL_DA.GetExecuteSqlCommand(blUpSQL); } r.WriteLine(""); } r.WriteLine(""); r.Close(); f.Close(); return filename; } public static string CreateInvRYORDERTList(List headList, string path, string optype, string invaccount, string invpsw) { var opBill = headList[0]; string filename = path + "\\FPORDER" + headList[0].INVOICENO.ToString() + "-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xml"; if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } //FileStream f = new FileStream(filename, FileMode.Create); //StreamWriter r = new StreamWriter(f, Encoding.Default); var goodcode = ""; var ReCode = "OP01"; if (optype == "M") ReCode = "OP02"; if (optype == "D") ReCode = "OP03"; Request order = new Request(); XmlHead Head = new XmlHead(); Head.PbAccount = invaccount; Head.PbPassWord = invpsw; Head.ReCode = ReCode; Head.SerialNo = Guid.NewGuid().ToString(); Head.PostTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); order.Head = Head; foreach (var bill in headList) { var bslist = GetBsList("c.BILLNO='" + bill.BILLNO + "'"); var bs = new Chfee_do_detail(); if (bslist.Count > 0) bs = bslist[0]; else { bs.ETD = DateTime.Now.ToString("yyyy-MM-dd"); bs.PORTLOAD = "QINGDAO"; bs.PORTDISCHARGE = "KOBE,JAPAN"; bs.VESSEL = "CMA CGM TUTICORIN"; bs.VOYNO = "0GE17W"; bs.MBLNO = "APLU719273300"; } XmlOrderBody orderBody = new XmlOrderBody(); XmlOrderDetail orderdetail = new XmlOrderDetail(); orderdetail.order_type = "整箱"; orderdetail.order_date = bs.ETD; orderdetail.customer_fullname = bill.INVOICECUSTNAME; orderdetail.start_port = bs.PORTLOAD.Replace(",", " "); orderdetail.end_port = bs.PORTDISCHARGE.Replace(",", " "); orderdetail.sail_date = bs.ETD; orderdetail.shipname = bs.VESSEL; orderdetail.voyage_no = bs.VOYNO; orderdetail.bill_lading_no = bs.MBLNO; var ctnList = new List(); var bsctnlist = MsOpSeaeDAL.GetBodyListSum("BSNO='" + bs.BSNO + "'"); foreach (var enumCtn in bsctnlist) { XmlCtn ctn = new XmlCtn(); ctn.ctn_type = enumCtn.CTNALL; ctn.ctn_quantity = enumCtn.CTNNUM.ToString(); ctnList.Add(ctn); } //ctn.ctn_type=bs.CNTRTOTAL orderBody.OrderDetail = orderdetail; XmlCtns Ctns = new XmlCtns(); Ctns.Ctns = ctnList; orderBody.Ctns = Ctns; var feelist = new List(); var invdetaillist = GetDetailList("PID='" + bill.GID + "'"); var invno = 1; foreach (var invdetail in invdetaillist) { Xmlexpense fee = new Xmlexpense(); fee.expense_id = invdetail.GID; fee.expense_name = invdetail.GOODSNAMEREF; fee.currency = "RMB"; fee.price = Math.Round(invdetail.TAXPRICE, 2).ToString(); fee.unit = invdetail.UNIT; if (fee.unit == "") fee.unit = "票"; fee.quantity = Math.Round(invdetail.PKGS, 0).ToString(); if (fee.quantity == "" || fee.quantity == "0") fee.quantity = "1"; feelist.Add(fee); } Xmlexpenses expenses = new Xmlexpenses(); expenses.expenses = feelist; orderBody.expenses = expenses; order.OrderBody = orderBody; // order.OrderBody=ord } using (StreamWriter sw = new StreamWriter(filename)) { XmlSerializer xs = new XmlSerializer(order.GetType()); xs.Serialize(sw, order); } XmlDocument xobj = new XmlDocument(); xobj.Load(filename); //if (File.Exists(filename)) //{ // File.Delete(filename); //} return Xml2String(xobj); } public static string CreateInvRYTList(List headList, string path, string optype, List expenses, string invaccount, string invpsw, string email) { var opBill = headList[0]; string filename = path + "\\FP" + headList[0].INVOICENO.ToString() + "-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xml"; if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } var goodcode = ""; var skr = ""; var INVSKR = MsSysParamSetDAL.GetData("PARAMNAME='INVSKR'"); if (INVSKR.PARAMVALUE != "") skr = INVSKR.PARAMVALUE; var fhr = ""; var INVFHR = MsSysParamSetDAL.GetData("PARAMNAME='INVFHR'"); if (INVFHR.PARAMVALUE != "") fhr = INVFHR.PARAMVALUE; var INVEXPLOCK = MsSysParamSetDAL.GetData("PARAMNAME='INVEXPLOCK'"); T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); var ReCode = "OP05"; //if (optype == "M") ReCode = "OP02"; //if (optype == "D") ReCode = "OP03"; Xmlinvoice order = new Xmlinvoice(); XmlHead Head = new XmlHead(); Head.PbAccount = invaccount; Head.PbPassWord = invpsw; Head.ReCode = ReCode; Head.SerialNo = Guid.NewGuid().ToString(); Head.PostTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); order.Head = Head; List invoicelist = new List(); foreach (var bill in headList) { XmlInvoicel invoice = new XmlInvoicel(); invoice.customer_name = bill.INVOICECUSTNAME; invoice.customer_code = bill.CUSTRATENO; invoice.customer_address = bill.CUSTADDRTEL; // invoice.customer_bank_name=bill.b var banklist = bill.CUSTBANK.Split(' '); if (banklist.Length == 2) { invoice.customer_bank_name = banklist[0]; invoice.customer_bank_account = banklist[1]; } else { invoice.customer_bank_name = bill.CUSTBANK; invoice.customer_bank_account = bill.CUSTBANK; } var banklist2 = bill.ACCOUNT.Split('-'); invoice.partner_bank_name = banklist2[0]; invoice.partner_bank_account = banklist2[1]; invoice.drawer = bill.OPERATORNAME; invoice.payee = skr; invoice.reviewer = fhr; invoice.total_amount = "0"; invoice.currency = bill.CURRENCY; invoice.remark_type = "1"; invoice.remark = bill.REMARK; invoice.email = email; // order.OrderBody.Ctns.Ctns = ctnList; var XmlInvDetail = new List(); var invno = 1; foreach (var invdetail in expenses) { XmlInvDetail fee = new XmlInvDetail(); fee.expense_id = invdetail.expense_id; fee.expense_name = invdetail.expense_name; fee.expense_amount = invdetail.amount; XmlInvDetail.Add(fee); } XmlInvDetails invDetails = new XmlInvDetails(); invDetails.InvDetail = XmlInvDetail; invoice.invDetails = invDetails; invoicelist.Add(invoice); XmlInvoiceBodys invoiceBodys = new XmlInvoiceBodys(); invoiceBodys.InvDetail = invoicelist; XmlInvoiceBody invoiceBody = new XmlInvoiceBody(); invoiceBody.InvoiceBodys = invoiceBodys; order.InvoiceBody = invoiceBody; // order.OrderBody.expenses.expenses = feelist; } using (StreamWriter sw = new StreamWriter(filename)) { XmlSerializer xs = new XmlSerializer(order.GetType()); xs.Serialize(sw, order); } XmlDocument xobj = new XmlDocument(); xobj.Load(filename); //if (File.Exists(filename)) //{ // File.Delete(filename); //} return Xml2String(xobj); } public static string Xml2String(XmlDocument XDoc) { MemoryStream Stream = new MemoryStream(); XmlTextWriter Writer = new XmlTextWriter(Stream, null); Writer.Formatting = Formatting.Indented; XDoc.Save(Writer); StreamReader sr = new StreamReader(Stream, System.Text.Encoding.UTF8); Stream.Position = 0; string XmlString = sr.ReadToEnd(); sr.Close(); Stream.Close(); return XmlString; } #endregion #region 发票列表权限范围 public static string GetRangDAListStr(string tb, string userid, string username, string companyid) { string str = ""; var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(" VISIBLERANGE,OPERATERANGE,AUTHORITYID,VSSQL ");//,VSSQL strSql.Append(" from VW_User_Authority "); strSql.Append(" where [NAME]='modInvoiceManagement' and USERID='" + userid + "' and ISDELETE=0"); string visiblerange = "4"; string operaterange = "4"; string AUTHORITYID = ""; string VSSQL = ""; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { visiblerange = Convert.ToString(reader["VISIBLERANGE"]); operaterange = Convert.ToString(reader["OPERATERANGE"]); AUTHORITYID = Convert.ToString(reader["AUTHORITYID"]); VSSQL = Convert.ToString(reader["VSSQL"]); break; } reader.Close(); } if (visiblerange == "4") { str = " (CREATEUSER='" + userid + "')"; } else if (visiblerange == "3") { str = " (CREATEUSER='" + userid + "')"; } else if (visiblerange == "2") { var rangeDa = new RangeDA(); var deptid = rangeDa.GetDEPTGID(userid); str = " CREATEUSER in (select USERID from vw_user where deptid='" + deptid + "') "; } else if (visiblerange == "1") { str = " COMPANYID='" + companyid + "' "; } else if (visiblerange == "5") { var userstr = new StringBuilder(); userstr.Append(" select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = "(COMPANYID='" + companyid + "' "; } else { str = str + " or COMPANYID='" + companyid + "' "; }; } str = str + ")"; reader.Close(); } } else if (visiblerange == "6") { var userstr = new StringBuilder(); userstr.Append(" select OPID,(select SHOWNAME from [user] where GID=user_authority_range_op.OPID) SHOWNAME from user_authority_range_op where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = " (CREATEUSER='" + Convert.ToString(reader["OPID"]) + "' "; } else { str = str + " or CREATEUSER='" + Convert.ToString(reader["OPID"]) + "'"; }; } str = str + ")"; reader.Close(); } } else if (visiblerange == "0") { str = " 1=1 "; } VSSQL = VSSQL.Trim(); if (!string.IsNullOrEmpty(VSSQL)) { if (!string.IsNullOrEmpty(str)) { str = str + " and (" + VSSQL + ") "; } else { str = " (" + VSSQL + ") "; } } return str; } #endregion #region 发票费用查询范围 public static string GetRangDAStr(string tb, string userid, string username, string companyid) { string str = ""; var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(" VISIBLERANGE,OPERATERANGE,AUTHORITYID,VSSQL "); strSql.Append(" from VW_User_Authority "); strSql.Append(" where [NAME]='modInvoiceImport' and USERID='" + userid + "' and ISDELETE=0"); string visiblerange = "4"; string operaterange = "4"; string AUTHORITYID = ""; string VSSQL = ""; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { visiblerange = Convert.ToString(reader["VISIBLERANGE"]); operaterange = Convert.ToString(reader["OPERATERANGE"]); AUTHORITYID = Convert.ToString(reader["AUTHORITYID"]); VSSQL = Convert.ToString(reader["VSSQL"]); break; } reader.Close(); } if (visiblerange == "4") { str = " (OP='" + username + "' OR INPUTBY='" + username + "' OR SALE='" + username + "' OR CUSTSERVICE='" + username + "')"; } else if (visiblerange == "3") { str = " (OP='" + username + "' OR INPUTBY='" + username + "' OR SALE='" + username + "' OR CUSTSERVICE='" + username + "')"; } else if (visiblerange == "2") { var rangeDa = new RangeDA(); var deptid = rangeDa.GetDEPTGID(userid); //str = " (OP in (select showname from vw_user where deptgid='" + deptid + "') OR SALE in (select showname from vw_user where deptgid='" + deptid + "') OR CUSTSERVICE in (select showname from vw_user where deptgid='" + deptid + "') " //+ " OR FRCUSTSERVICE in (select showname from vw_user where deptgid='" + deptid + "') OR INPUTBY in (select showname from vw_user where deptgid='" + deptid + "'))"; str = $" exists(select 1 from vw_user where deptgid='{deptid}' and SHOWNAME in(OP,SALE,FRCUSTSERVICE,CUSTSERVICE,INPUTBY)) "; } else if (visiblerange == "1") { //str = " (OP in (select showname from vw_user where companyid='" + companyid + "') OR SALE in (select showname from vw_user where companyid='" + companyid + "') OR CUSTSERVICE in (select showname from vw_user where companyid='" + companyid + "') " // + " OR FRCUSTSERVICE in (select showname from vw_user where companyid='" + companyid + "') OR INPUTBY in (select showname from vw_user where companyid='" + companyid + "'))"; str = " exists (select 1 from vw_user where COMPANYID='" + companyid + "' and showname in(OP,SALE,CUSTSERVICE,FRCUSTSERVICE,INPUTBY)) "; } else if (visiblerange == "5") { var userstr = new StringBuilder(); userstr.Append(" select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = " (b.Corpid='" + Convert.ToString(reader["COMPANYID"]) + "'"; } else { str = str + " or b.Corpid='" + Convert.ToString(reader["COMPANYID"]) + "'"; }; } str = str + ")"; reader.Close(); } } else if (visiblerange == "6") { var userstr = new StringBuilder(); userstr.Append(" select OPID,(select SHOWNAME from [user] where GID=user_authority_range_op.OPID) SHOWNAME from user_authority_range_op where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = " (b.OP='" + Convert.ToString(reader["SHOWNAME"]) + "' OR b.SALE='" + Convert.ToString(reader["SHOWNAME"]) + "' OR b.CUSTSERVICE='" + Convert.ToString(reader["SHOWNAME"]) + "' OR b.INPUTBY='" + Convert.ToString(reader["SHOWNAME"]) + "' "; } else { str = str + " or b.OP='" + Convert.ToString(reader["SHOWNAME"]) + "' OR b.SALE='" + Convert.ToString(reader["SHOWNAME"]) + "' OR b.CUSTSERVICE='" + Convert.ToString(reader["SHOWNAME"]) + "' OR b.INPUTBY='" + Convert.ToString(reader["SHOWNAME"]) + "' "; }; } str = str + ")"; reader.Close(); } } else if (visiblerange == "0") { str = " 1=1 "; } VSSQL = VSSQL.Trim(); if (!string.IsNullOrEmpty(VSSQL)) { if (!string.IsNullOrEmpty(str)) { str = str + " and (" + VSSQL + ") "; } else { str = " (" + VSSQL + ") "; } } return str; } public static string GetRangAddFeeDAStr(string userid, string username, string companyid) { string str = ""; string modustr = "MODINVFEERANGE"; var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(" VISIBLERANGE,OPERATERANGE,AUTHORITYID "); strSql.Append(" from VW_User_Authority "); strSql.Append(" where [NAME]='" + modustr + "' and USERID='" + userid + "' and ISDELETE=0"); string visiblerange = "4"; string operaterange = "4"; string AUTHORITYID = ""; Database db = DatabaseFactory.CreateDatabase(); using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { visiblerange = Convert.ToString(reader["VISIBLERANGE"]); operaterange = Convert.ToString(reader["OPERATERANGE"]); AUTHORITYID = Convert.ToString(reader["AUTHORITYID"]); break; } reader.Close(); } if (visiblerange == "4") { str = " f.ENTEROPERATOR='" + userid + "'"; } else if (visiblerange == "3") { str = " f.ENTEROPERATOR='" + userid + "'"; } else if (visiblerange == "2") { var rangeDa = new RangeDA(); var deptname = rangeDa.GetDEPTNAME(userid); str = " f.ENTEROPERATOR in (select USERID from user_company where COMPANYID='" + companyid + "') and f.ENTEROPERATOR in (select userid from user_baseinfo where DEPTNAME='" + deptname + "')"; } else if (visiblerange == "1") { str = " f.ENTEROPERATOR in (select USERID from user_company where COMPANYID='" + companyid + "') "; } else if (visiblerange == "5") { var userstr = new StringBuilder(); userstr.Append(" select USERID FROM user_company WHERE COMPANYID IN (select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1)"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = " (f.ENTEROPERATOR='" + Convert.ToString(reader["USERID"]) + "'"; } else { str = str + " or f.ENTEROPERATOR='" + Convert.ToString(reader["USERID"]) + "'"; }; } str = str + ")"; reader.Close(); } } else if (visiblerange == "6") { var userstr = new StringBuilder(); userstr.Append(" select OPID,(select SHOWNAME from [user] where GID=user_authority_range_op.OPID) SHOWNAME from user_authority_range_op where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1"); Database userdb = DatabaseFactory.CreateDatabase(); using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString())) { str = ""; while (reader.Read()) { if (str == "") { str = " (f.ENTEROPERATOR='" + Convert.ToString(reader["OPID"]) + "' "; } else { str = str + " or f.ENTEROPERATOR='" + Convert.ToString(reader["OPID"]) + "' "; }; } str = str + ")"; reader.Close(); } } else if (visiblerange == "0") { str = " 1=1 "; } return str; } #endregion public static DBResult SetInvoiceFee(ChInvoice_HangXin BlueInvoice, System.Web.HttpSessionStateBase Session) { var result = new DBResult(); if (BlueInvoice.INVOICETYPE == 2) { //申请开票 var dataList = ChinvoiceapplicationDAL.GetDataListAll("INVBILLNO='" + BlueInvoice.BILLNO + "'", Convert.ToString(Session["USERID"]), Convert.ToString(Session["USERCODE"]), Convert.ToString(Session["COMPANYID"])); result = ChinvoiceDAL.DelAppList(dataList, BlueInvoice.BILLNO); } else { var dataList = ChinvoiceDAL.GetBodyList("BILLNO='" + BlueInvoice.BILLNO + "'"); result = ChinvoiceDAL.DelFeeDo(dataList, BlueInvoice.GID); } return result; } } public static class AES { public static string key = ConfigurationManager.AppSettings["AESkey"]; #region AesEncrypt aes加密 /// /// AES 加密 /// /// 明文(待加密) /// public static string AesEncrypt(string str) { if (string.IsNullOrEmpty(str)) return null; Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str); if (key == null || key == "") key = "12345678876543211234567887654abc"; RijndaelManaged rm = new RijndaelManaged { Key = Encoding.UTF8.GetBytes(key), Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 }; ICryptoTransform cTransform = rm.CreateEncryptor(); Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); } #endregion #region AesDecrypt aes解密 /// /// AES 解密 /// /// 明文(待解密) /// public static string AesDecrypt(string str) { if (string.IsNullOrEmpty(str)) return null; Byte[] toEncryptArray = Convert.FromBase64String(str); if (key == null || key == "") key = "12345678876543211234567887654abc"; RijndaelManaged rm = new RijndaelManaged { Key = Encoding.UTF8.GetBytes(key), Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 }; ICryptoTransform cTransform = rm.CreateDecryptor(); Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray); } #endregion } }