diff --git a/SAL_OUTSTOCK/IssueAnInvoiceFormPlugIn.cs b/SAL_OUTSTOCK/IssueAnInvoiceFormPlugIn.cs index bc38126..75f78ef 100644 --- a/SAL_OUTSTOCK/IssueAnInvoiceFormPlugIn.cs +++ b/SAL_OUTSTOCK/IssueAnInvoiceFormPlugIn.cs @@ -27,6 +27,7 @@ namespace SAL_OUTSTOCK public class IssueAnInvoiceFormPlugIn : AbstractDynamicFormPlugIn { private bool _doingButtonFlag = false; + private IOperationResult opResult; public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); @@ -34,25 +35,29 @@ namespace SAL_OUTSTOCK //数电普票 if (e.BarItemKey.Equals("tbElectronic030", StringComparison.OrdinalIgnoreCase)) { - ToExecuteRequest("030"); + DoCheckConditions("030"); + return; } //数电专票 if (e.BarItemKey.Equals("tbElectronic032", StringComparison.OrdinalIgnoreCase)) { - ToExecuteRequest("032"); + DoCheckConditions("032"); + return; } //增值税专票(纸质) if (e.BarItemKey.Equals("tbPaper004", StringComparison.OrdinalIgnoreCase)) { - ToExecuteRequest("004"); + DoCheckConditions("004"); + return; } //增值税普票(纸质) if (e.BarItemKey.Equals("tbPaper007", StringComparison.OrdinalIgnoreCase)) { - ToExecuteRequest("007"); + DoCheckConditions("007"); + return; } } @@ -60,28 +65,117 @@ namespace SAL_OUTSTOCK /// 开始执行 /// /// - public void ToExecuteRequest(string FPLXDM) + public void DoCheckConditions(string FPLXDM) { if (!_doingButtonFlag) { var org = this.View.Model.GetValue("FStockOrgId") as DynamicObject; - if (org != null && org["Id"].Long2Int() == 101542) + var checkId = 101542L; + //checkId = this.Context.CurrentOrganizationInfo.ID; + //checkId = org["Id"].Long2Int(); + if (org != null && org["Id"].Long2Int() == checkId) { + opResult = new OperationResult(); _doingButtonFlag = true; long orgId = org["Id"].Long2Int(); - //orgId = this.Context.CurrentOrganizationInfo.ID; - SendRequest(FPLXDM, orgId); - return; + DoIssueAnInvoice(FPLXDM, orgId); } else { this.View.ShowMessage("此功能未开放!如有需要请联系管理员!"); - return; } + _doingButtonFlag = false; } } + /// + /// 列表发票开具 + /// + /// + public void DoIssueAnInvoice(string FPLXDM, long orgId) + { + try + { + RequestDataHandle(FPLXDM, orgId, "GP_FPKJ", Inv_FPKJ, DataBackFill); + } + catch (Exception ex) + { + opResult.OperateResult.Add(new OperateResult + { + Name = "错误提示", + Message = ex.Message, + SuccessStatus = false + }); + } + finally + { + _doingButtonFlag = false; + if (opResult.OperateResult.Any()) + this.View.ShowOperateResult(opResult.OperateResult); + } + } + + /// + /// 发送报文信息处理 + /// + /// + /// + /// + /// + public BaseRequest InterfaceDataHandle(string FPLXDM, DynamicObject invInfo + , Func contentAction) + { + //发票开具接口Code + //string interfaceCode = "GP_FPKJ"; + + string appId = invInfo["FAPPID"].ToString(); + string encodeKey = invInfo["FENCRYPTIONKEY"].ToString(); + + var requestBase = new BaseRequest(); + requestBase._interface = new Interface(); + var date = DateTime.Now; + + string newDate = date.ToString("yyyy-MM-dd HH:mm:ss"); + string newDate2 = date.ToString("yyyyMMdd"); + + string no = Guid.NewGuid().ToString("N").Substring(0, 9).ToUpper(); + //数据交换id + string dataExchangeId = "DZFPQZ" + "DFXJ1001" + newDate2 + no; + + requestBase._interface.globalInfo.appId = appId; + //requestBase._interface.globalInfo.interfaceCode = interfaceCode; + requestBase._interface.globalInfo.requestTime = newDate; + requestBase._interface.globalInfo.dataExchangeId = dataExchangeId; + + StringBuilder errMsg = new StringBuilder(); + try + { + //var requestCommonFPKJ = SetRequestCommonFPKJ(FPLXDM, iiDt, ref errMsg); + + if (!errMsg.IsNullOrEmpty() && errMsg.Length > 0) + throw new Exception(errMsg.ToString()); + + string contentDecode = contentAction(FPLXDM, invInfo); + + //发票报文加密处理处理 + string content = Base64Helper.Base64Encode(contentDecode); + string contentSHA256 = SHA256Helper.SHA256EncryptString(content); + + //使用加密密钥再次加密 + string contentKey = AESHepler.AesEncryptorBase64(contentSHA256, encodeKey); + + requestBase._interface.data.content = content; + requestBase._interface.data.contentKey = contentKey; + } + catch (Exception ex) + { + throw ex; + } + + return requestBase; + } + /// /// 设置content报文明文信息 /// @@ -255,18 +349,24 @@ WHERE } /// - /// 发送报文信息处理 + /// 发送报文,获取结果 /// /// - /// - public BaseRequest RequestDataHandle(string FPLXDM, long orgId, ref bool isTestUrl) + /// + /// + /// + public void RequestDataHandle(string FPLXDM, long orgId, string _interfaceCode, + Func contentAction, + Func endAction) { - //发票开具接口Code - string interfaceCode = "GP_FPKJ"; - string whereSql = $" AND {((FPLXDM.Equals("007") || FPLXDM.Equals("004")) ? "FIsDeviceType4" : "FIsDeviceType6")} = 1 "; - #region 获取对应开票信息 - var iinfoSQL = $@" + var result = string.Empty; + try + { + + #region 获取对应开票信息 + string whereSql = $" AND {((FPLXDM.Equals("007") || FPLXDM.Equals("004")) ? "FIsDeviceType4" : "FIsDeviceType6")} = 1 "; + var iinfoSQL = $@" SELECT TOP 1 FID, FUSEORGID, @@ -282,7 +382,10 @@ SELECT TOP 1 FSERIALNUMBER, FENCRYPTIONKEY, FISDEFAULT, - FISTESTINFO + FISTESTINFO, + FCERTIFICATE2NAME, + FCERTIFICATE2KEY, + FREQUESTURL FROM T_BD_INVOICEINFORMATION WHERE @@ -291,98 +394,40 @@ WHERE ORDER BY FISDEFAULT DESC , FISTESTINFO DESC "; - var iinfoDB = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{iinfoSQL}"); + var iinfoDB = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{iinfoSQL}"); - if (iinfoDB == null || !iinfoDB.Any()) - throw new Exception("使用组织没有配对的开票系统信息!"); + if (iinfoDB == null || !iinfoDB.Any()) + throw new Exception("使用组织没有配对的开票系统信息!"); - var iiDt = iinfoDB[0]; - //是否测试数据 - isTestUrl = iiDt["FISTESTINFO"].Long2Int() == 1; - string appId = iiDt["FAPPID"].ToString(); - string key = iiDt["FENCRYPTIONKEY"].ToString(); + var info = iinfoDB[0]; + bool isTest = info["FISTESTINFO"].Long2Int() == 1; - #endregion 获取对应开票信息 + var requestData = InterfaceDataHandle(FPLXDM, info, contentAction); - var requestBase = new BaseRequest(); - requestBase._interface = new Interface(); - var date = DateTime.Now; + requestData._interface.globalInfo.interfaceCode = _interfaceCode; - string newDate = date.ToString("yyyy-MM-dd HH:mm:ss"); - string newDate2 = date.ToString("yyyyMMdd"); - - string no = Guid.NewGuid().ToString("N").Substring(0, 9).ToUpper(); - //数据交换id - string dataExchangeId = "DZFPQZ" + "DFXJ1001" + newDate2 + no; - - requestBase._interface.globalInfo.appId = appId; - requestBase._interface.globalInfo.interfaceCode = interfaceCode; - requestBase._interface.globalInfo.requestTime = newDate; - requestBase._interface.globalInfo.dataExchangeId = dataExchangeId; - - StringBuilder errMsg = new StringBuilder(); - try - { - var requestCommonFPKJ = SetRequestCommonFPKJ(FPLXDM, iiDt, ref errMsg); - - if (!errMsg.IsNullOrEmpty() && errMsg.Length > 0) - throw new Exception(errMsg.ToString()); - - //更新对应开票信息的流水号记录 - var serialNumber = iiDt["FSERIALNUMBER"].Long2Int(); - var newSNumber = (serialNumber > 998 ? 1 : serialNumber + 1).ToString("D3"); - var updSql = $"/*dialect*/UPDATE T_BD_INVOICEINFORMATION SET FSERIALNUMBER = '{newSNumber}' WHERE FID = {iiDt["FID"]}"; - var isFlag = DBUtils.Execute(this.Context, updSql); - - var contentBefore = JsonConvert.SerializeObject(requestCommonFPKJ); - //发票报文加密处理处理 - string content = Base64Helper.Base64Encode(contentBefore); - string contentSHA256 = SHA256Helper.SHA256EncryptString(content); - - //使用加密密钥再次加密 - string contentKey = AESHepler.AesEncryptorBase64(contentSHA256, key); - - requestBase._interface.data.content = content; - requestBase._interface.data.contentKey = contentKey; - } - catch (Exception ex) - { - throw ex; - } - - return requestBase; - } - - /// - /// 发送报文,获取结果 - /// - /// - public void SendRequest(string FPLXDM, long orgId) - { - var result = string.Empty; - //var jsonStr = string.Empty; - try - { - var DataInfo = this.Model.DataObject; - var fid = DataInfo["Id"].Long2Int(); - //财务信息 - var invoiveUrl = this.View.Model.GetValue("FInvoiceNumber"); - if (invoiveUrl != null && invoiveUrl.ToString().Trim().Length > 0) - { - this.View.ShowErrMessage($"此出库订单已经打印发票【财务信息】查看对应发票信息"); - return; - } - bool isTestUrl = false; - var requestData = RequestDataHandle(FPLXDM, orgId, ref isTestUrl); var postData = JsonConvert.SerializeObject(requestData); + #endregion 获取对应开票信息 - //jsonStr = Base64Helper.Base64Decode(requestData._interface.data.content); - - var url = "https://dev.fapiao.com:18944/fpt-rhqz/prepose";//双向通道地址 - if (isTestUrl) - url = "https://dev.fapiao.com:18944/fpt-rhqz/prepose";//双向通道地址-测试 + var url = info["FREQUESTURL"].ToString();//双向通道地址 + if (url.IsNullOrEmptyOrWhiteSpace()) + url = "https://dev.fapiao.com:18944/fpt-rhqz/prepose"; - result = DoPost(url, postData); + var cerName = info["FCERTIFICATE2NAME"].ToString();//证书密钥 + if (cerName.IsNullOrEmptyOrWhiteSpace()) + cerName = "testISSUE.pfx"; + + //证书文件存放地址 + string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; + var keyStoreFile = baseDirectory + $@"\bin\ISSUE\{cerName}"; + + var cerKey = info["FCERTIFICATE2KEY"].ToString(); + if (cerKey.IsNullOrEmptyOrWhiteSpace()) + cerKey = "123456"; + + var certificate2 = new X509Certificate2(keyStoreFile, cerKey); + + result = HttpWebHelper.DoPost(url, postData, certificate2); var responseData = JsonConvert.DeserializeObject(result); var returnStateInfo = responseData._interface.returnStateInfo; @@ -390,33 +435,8 @@ ORDER BY { if (returnStateInfo.returnCode.Equals("0000")) { - this.View.ShowMessage($"报文处理成功,正在回填发票信息【财务信息】"); - var resultData = JsonConvert.DeserializeObject(Base64Helper.Base64Decode(responseData._interface.data.content)); - - var fpInfo = string.Empty; - var data = resultData.DATA; - //回填发票下载地址 - if (FPLXDM.Equals("030") || FPLXDM.Equals("032")) - fpInfo = data.PDF_URL; - else if (FPLXDM.Equals("007") || FPLXDM.Equals("004")) - fpInfo = data.FP_MW; - - this.View.Model.SetValue("FInvoiceUrl", fpInfo); - this.View.Model.SetValue("FInvoiceNumber", data.FP_HM); - this.View.Model.SetValue("FFPLXDM", data.FPLXDM); - this.View.Model.SetValue("FFPQQLSH", data.FPQQLSH); - - var updSql = $@"/*dialect*/ -UPDATE T_SAL_OUTSTOCKFIN -SET FINVOICEURL = '{fpInfo}' -,FFPLXDM = '{data.FPLXDM}' -,FFPQQLSH = '{data.FPQQLSH}' -,FINVOICENUMBER = '{data.FP_HM}' -WHERE - FID = {fid}"; - - //发票信息址回填到数据库 - var isFlag = DBUtils.Execute(this.Context, updSql); + var resContent = Base64Helper.Base64Decode(responseData._interface.data.content); + var isFlag = endAction(resContent, info); } else { @@ -426,110 +446,278 @@ WHERE } catch (JsonSerializationException ex) { - this.View.ShowMessage($"错误信息:{result}", MessageBoxType.Error); + opResult.OperateResult.Add(new OperateResult() + { + Name = "信息提示", + Message = ex.Message, + SuccessStatus = false + }); + + opResult.OperateResult.Add(new OperateResult() + { + Name = "信息提示", + Message = result, + SuccessStatus = false + }); + //this.View.ShowMessage($"错误信息:{result}", MessageBoxType.Error); } catch (Exception ex) { - this.View.ShowErrMessage($"错误信息:{ex.Message}"); - - //IOperationResult opResult = new OperationResult(); - - //opResult.OperateResult.Add(new OperateResult() - //{ - // Name = "信息提示", - // Message = ex.Message, - // SuccessStatus = false - //}); - - //opResult.OperateResult.Add(new OperateResult() - //{ - // Name = "信息提示", - // Message = jsonStr, - // SuccessStatus = false - //}); - - - //this.View.ShowOperateResult(opResult.OperateResult); + //this.View.ShowErrMessage($"错误信息:{ex.Message}"); + opResult.OperateResult.Add(new OperateResult() + { + Name = "信息提示", + Message = ex.Message, + SuccessStatus = false + }); } - finally - { - _doingButtonFlag = false; - } - - return; } /// - /// post请求 + /// 设置content报文明文信息 /// - /// - /// + /// 发票类型 + /// 开票信息 /// - private static string DoPost(string url, string postData) + public string Inv_FPKJ(string FPLXDM, DynamicObject invoiceInfo) + { + var DataInfo = this.Model.DataObject; + var fid = DataInfo["Id"].Long2Int(); + + var result = new GP_FPKJ(); + var fpkj = result.FPKJ = new REQUEST_COMMON_FPKJ(); + + var headSql = $@" +SELECT + ID,DOCUMENTSTATUS,APPLYID,APPLYNAME,BILLALLAMOUNT,BILLAMOUNT,BILLTAXAMOUNT,BILLNO, + CUSTID,CUSTNAME,INVOICETITLE,INVOICEBANKNAME,INVOICEBANKACCOUNT,INVOICENUMBER, + TAXREGISTERCODE,SOCIALCRECODE,INVOICETEL,INVOICEADDRESS +FROM + V_INVINFO_OUTSTOCK +WHERE ID = {fid} +"; + var sHeadInfos = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{headSql}"); + var sHeadInfo = sHeadInfos[0]; + #region 针对非农产收购发票 + + #region 基础信息 + + if (sHeadInfos != null && sHeadInfos.Any()) + { + foreach (var item in sHeadInfos) + { + if (!item["INVOICENUMBER"].IsNullOrEmptyOrWhiteSpace()) + { + opResult.OperateResult.Add(new OperateResult + { + Name = item["BILLNO"].ToString(), + Message = $"{item["BILLNO"]}该订单已打印过发票!", + SuccessStatus = false + }); + continue; + } + + if (!item["DOCUMENTSTATUS"].ToString().Trim().Equals("C")) + opResult.OperateResult.Add(new OperateResult + { + Name = item["BILLNO"].ToString(), + Message = $"{item["BILLNO"]}该订单未审核完毕!", + SuccessStatus = false + }); + } + } + + + if (opResult.OperateResult.Any()) + throw new Exception("检验信息"); + + fpkj.FPQQLSH = $"{invoiceInfo["FFIRMCODE"]}{DateTime.Now.ToString("yyyyMMddHHmm")}{invoiceInfo["FSERIALNUMBER"]}"; + fpkj.FPLXDM = FPLXDM; + + if (FPLXDM.Equals("030") || FPLXDM.Equals("032")) + fpkj.SBLX = "6"; + else if (FPLXDM.Equals("007") || FPLXDM.Equals("004")) + fpkj.SBLX = "4"; + + //是否纸质发票 + bool isPaper = fpkj.SBLX == "4"; + + if (isPaper) + fpkj.KPZDDM = "cszp"; + + fpkj.KPLX = "0"; + fpkj.ZSFS = "0"; + + fpkj.JSHJ = sHeadInfos.Sum(x => x["BILLALLAMOUNT"].ToDecimalR()).ToString(); + fpkj.HJJE = sHeadInfos.Sum(x => x["BILLAMOUNT"].ToDecimalR()).ToString(); + fpkj.HJSE = sHeadInfos.Sum(x => x["BILLTAXAMOUNT"].ToDecimalR()).ToString(); + + #endregion 基础信息 + + #region 销售方 + + fpkj.XSF_NSRSBH = invoiceInfo["FTAXCODE"].ToString(); + fpkj.XSF_MC = invoiceInfo["FINVOICETITLE"].ToString(); + fpkj.XSF_DZDH = $"{invoiceInfo["FINVOICEADDRESS"]} {invoiceInfo["FINVOICETEL"]}"; + fpkj.XSF_YHZH = $"{invoiceInfo["FINVOICEBANKNAME"]} {invoiceInfo["FINVOICEBANKACCOUNT"]}"; + + fpkj.KPR = invoiceInfo["FDRAWER"].ToString(); + + fpkj.BZ = sHeadInfo["APPLYNAME"].ToString(); + #endregion 销售方 + + #region 购买方(客户信息) + + fpkj.GMF_MC = (sHeadInfo["INVOICETITLE"].IsNullOrEmpty() ? (sHeadInfo["CUSTNAME"].IsNullOrEmpty() ? "" : sHeadInfo["CUSTNAME"]) : sHeadInfo["INVOICETITLE"]).ToString(); + //纳税人识别号/统一社会信用代码 + fpkj.GMF_NSRSBH = (sHeadInfo["SOCIALCRECODE"].IsNullOrEmpty() ? (sHeadInfo["TAXREGISTERCODE"].IsNullOrEmpty() ? "" : sHeadInfo["TAXREGISTERCODE"]) : sHeadInfo["SOCIALCRECODE"]).ToString(); + fpkj.GMF_DZDH = $"{sHeadInfo["INVOICEADDRESS"]} {sHeadInfo["INVOICETEL"]}"; + fpkj.GMF_YHZH = $"{sHeadInfo["INVOICEBANKNAME"]} {sHeadInfo["INVOICEBANKACCOUNT"]}"; + + if (fpkj.GMF_MC.IsNullOrEmptyOrWhiteSpace()) + opResult.OperateResult.Add(new OperateResult + { + Name = "客户信息", + Message = "购买方(客户信息)名称不能为空!", + SuccessStatus = false + }); + + if (fpkj.GMF_NSRSBH.IsNullOrEmptyOrWhiteSpace()) + opResult.OperateResult.Add(new OperateResult + { + Name = "客户信息", + Message = "购买方(客户信息)统一社会信用代码或纳税人识别号不能为空!", + SuccessStatus = false + }); + + if (isPaper && fpkj.GMF_DZDH.IsNullOrEmptyOrWhiteSpace()) + opResult.OperateResult.Add(new OperateResult + { + Name = "客户信息", + Message = "开具纸质发票时,购买方(客户信息)开票电话地址不完整!请检查是否缺少地址信息,电话信息", + SuccessStatus = false + }); + + if (isPaper && fpkj.GMF_YHZH.IsNullOrEmptyOrWhiteSpace()) + opResult.OperateResult.Add(new OperateResult + { + Name = "客户信息", + Message = "开具纸质发票时,购买方(客户信息)开票银行信息不完整!请检查是否缺少银行信息,银行账号信息", + SuccessStatus = false + }); + + #endregion 购买方 + + #region 明细信息 + var details = fpkj.COMMON_FPKJ_XMXX = new List(); + if (opResult.OperateResult.Any()) + throw new Exception("检验信息"); + + var entrySql = $@" +SELECT + ID,TaxCategoryCodeId,Number,TaxCode,MaterialName,Qty,Specification,UnitName,Price,Amount,TaxRate,TaxAmount +FROM V_INVINFO_OUTSTOCKENTRY + +WHERE ID = {fid} +"; + + var dbList = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{entrySql}"); + + foreach (var item in dbList) + { + + if (item["TaxCategoryCodeId"].Long2Int() == 0) + { + opResult.OperateResult.Add(new OperateResult + { + Name = item["Number"].ToString(), + Message = $"物料:{item["Number"]} 缺少税收分类编码!", + SuccessStatus = false + }); + continue; + } + + details.Add(new COMMON_FPKJ_XMXX + { + FPHXZ = "0", + SPBM = item["TaxCode"].ToString(), + //ZXBM = material["Number"].ToString(), + XMMC = item["MaterialName"].ToString(), + XMSL = item["Qty"].ToDecimal().ToString("F6"), + GGXH = item["Specification"].ToString(), + DW = item["UnitName"].ToString(), + XMDJ = item["Price"].ToDecimal().ToString("F6"), + XMJE = item["Amount"].ToDecimal().ToString("F2"), + SL = (item["TaxRate"].ToDecimal() * 0.01M).ToString("F2"), + SE = item["TaxAmount"].ToDecimal().ToString("F2"), + }); + } + + if (opResult.OperateResult.Any()) + throw new Exception("物料缺少税收分类编码"); + + + #endregion 明细信息 + + #endregion 针对非农产收购发票 + + return JsonConvert.SerializeObject(result); + } + + /// + /// 数据回填更新到数据库 + /// + /// 回调数据 + /// + /// + private bool DataBackFill(string content, DynamicObject invInfo) { try { - string result = string.Empty; + this.View.ShowMessage($"报文处理成功,正在回填发票信息【财务信息】"); - HttpWebRequest request = null; - if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) - { - request = WebRequest.Create(url) as HttpWebRequest; - ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); - request.ProtocolVersion = HttpVersion.Version11; - // 这里设置了协议类型。 - ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;// SecurityProtocolType.Tls1.2; - request.KeepAlive = false; - ServicePointManager.CheckCertificateRevocationList = true; - ServicePointManager.DefaultConnectionLimit = 100; - ServicePointManager.Expect100Continue = false; - } - else - { - request = (HttpWebRequest)WebRequest.Create(url); - } + var DataInfo = this.Model.DataObject; + var fid = DataInfo["Id"].Long2Int(); - string str1 = AppDomain.CurrentDomain.BaseDirectory; + //更新对应开票信息的流水号记录 + var serialNumber = invInfo["FSERIALNUMBER"].Long2Int(); + var newSNumber = (serialNumber > 998 ? 1 : serialNumber + 1).ToString("D3"); + var updInvSql = $"/*dialect*/UPDATE T_BD_INVOICEINFORMATION SET FSERIALNUMBER = '{newSNumber}' WHERE FID = {invInfo["FID"]}"; + DBUtils.Execute(this.Context, updInvSql); - //证书 - var keystorefile = str1 + @"\bin\ISSUE\testISSUE.pfx"; - var key = "123456"; + var resultData = JsonConvert.DeserializeObject(content); - var cer = new X509Certificate2(keystorefile, key); + var fpInfo = string.Empty; + var data = resultData.DATA; + //回填发票下载地址 + if (data.FPLXDM.Equals("030") || data.FPLXDM.Equals("032")) + fpInfo = data.PDF_URL; + else if (data.FPLXDM.Equals("007") || data.FPLXDM.Equals("004")) + fpInfo = data.FP_MW; - request.ClientCertificates.Add(cer); - request.Method = "POST"; //使用get方式发送数据 - request.ContentType = "application/json;charset=utf-8"; + this.View.Model.SetValue("FInvoiceUrl", fpInfo); + this.View.Model.SetValue("FInvoiceNumber", data.FP_HM); + this.View.Model.SetValue("FFPLXDM", data.FPLXDM); + this.View.Model.SetValue("FFPQQLSH", data.FPQQLSH); - byte[] data = Encoding.UTF8.GetBytes(postData); - Stream newStream = request.GetRequestStream(); - newStream.Write(data, 0, data.Length); - newStream.Close(); + var updSql = $@"/*dialect*/ + UPDATE T_SAL_OUTSTOCKFIN + SET FINVOICEURL = '{fpInfo}' + ,FFPLXDM = '{data.FPLXDM}' + ,FFPQQLSH = '{data.FPQQLSH}' + ,FINVOICENUMBER = '{data.FP_HM}' + WHERE + FID = {fid} "; - HttpWebResponse response = (HttpWebResponse)request.GetResponse(); - Stream stream = response.GetResponseStream(); - - using (StreamReader sr = new StreamReader(stream)) - { - result = sr.ReadToEnd(); - } - return result; + //发票信息回填到数据库 + var isFlag = DBUtils.Execute(this.Context, updSql); + return isFlag > 0; } - catch (Exception ex) { throw ex; } - - } - - private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) - { - if (errors == SslPolicyErrors.None) - return true; //总是接受 - - return false; } } } diff --git a/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs b/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs index f9fb86a..71122a2 100644 --- a/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs +++ b/SAL_OUTSTOCK/MergePrintIssueAnInvPlugIn.cs @@ -27,7 +27,7 @@ namespace SAL_OUTSTOCK public class MergePrintIssueAnInvPlugIn : AbstractListPlugIn { private bool _doingButtonFlag = false; - private IOperationResult opResult = new OperationResult(); + private IOperationResult opResult; public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); @@ -81,7 +81,7 @@ namespace SAL_OUTSTOCK var checkId = 101542L; orgId = orgIdList.First(); - checkId = orgId; + //checkId = orgId; if (orgId == checkId) DoIssueAnInvoice2List(FPLXDM, orgId); else @@ -116,7 +116,7 @@ namespace SAL_OUTSTOCK var headSql = $@" SELECT - ID,DOCUMENTSTATUS,APPLYID,APPLYNAME,BILLALLAMOUNT,BILLAMOUNT,BILLTAXAMOUNT,BILLNO + ID,DOCUMENTSTATUS,APPLYID,APPLYNAME,BILLALLAMOUNT,BILLAMOUNT,BILLTAXAMOUNT,BILLNO, CUSTID,CUSTNAME,INVOICETITLE,INVOICEBANKNAME,INVOICEBANKACCOUNT,INVOICENUMBER, TAXREGISTERCODE,SOCIALCRECODE,INVOICETEL,INVOICEADDRESS FROM diff --git a/SAL_OUTSTOCK/SQLServer/销售出库单财务信息-视图.sql b/SAL_OUTSTOCK/SQLServer/销售出库单财务信息-视图.sql index 7dc385c..4b6ff61 100644 --- a/SAL_OUTSTOCK/SQLServer/销售出库单财务信息-视图.sql +++ b/SAL_OUTSTOCK/SQLServer/销售出库单财务信息-视图.sql @@ -13,13 +13,18 @@ SELECT AF.FBILLAMOUNT AS BILLAMOUNT, AF.FBILLTAXAMOUNT as BILLTAXAMOUNT ,AF.FINVOICENUMBER AS INVOICENUMBER --- ,B_L.FDEPTID as APPLYID --- ,B_L.FNAME as APPLYNAME - ,1 as APPLYID - ,'' as APPLYNAME + ,B_L.FDEPTID as APPLYID + ,B_L.FNAME as APPLYNAME + --,1 as APPLYID + --,'' as APPLYNAME ,C_L.FNAME as CUSTNAME ,c.FTAXREGISTERCODE as TAXREGISTERCODE ,c.FSOCIALCRECODE as SOCIALCRECODE + --,c.FINVOICETITLE as INVOICETITLE + --,c.FINVOICEBANKNAME as INVOICEBANKNAME + --,c.FINVOICEBANKACCOUNT as INVOICEBANKACCOUNT + --,c.FINVOICETEL as INVOICETEL + --,c.FINVOICEADDRESS as INVOICEADDRESS ,c_f.FINVOICETITLE as INVOICETITLE ,c_f.FINVOICEBANKNAME as INVOICEBANKNAME ,c_f.FINVOICEBANKACCOUNT as INVOICEBANKACCOUNT @@ -28,8 +33,7 @@ SELECT FROM T_SAL_OUTSTOCK A LEFT JOIN T_SAL_OUTSTOCKFIN AF ON A.FID = AF.FID --- left join T_BD_DEPARTMENT_L B_L on A.F_QNV_Base1 = B_L.FDEPTID and b_l.FLOCALEID = 2052 + left join T_BD_DEPARTMENT_L B_L on A.F_QNV_Base1 = B_L.FDEPTID and b_l.FLOCALEID = 2052 left join T_BD_CUSTOMER C ON a.FCUSTOMERID = c.FCUSTID left join T_BD_CUSTOMER_L C_L ON a.FCUSTOMERID = c_l.FCUSTID and C_L.FLOCALEID = 2052 - left join T_BD_CUSTOMER_F C_F on a.FCUSTOMERID = C_F.FCUSTID - + left join T_BD_CUSTOMER_F C_F on a.FCUSTOMERID = C_F.FCUSTID \ No newline at end of file diff --git a/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs b/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs index b5d97f9..070256b 100644 --- a/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs +++ b/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs @@ -124,7 +124,7 @@ namespace UseGetFmaterialData if (org == null) org = this.View.Model.GetValue("FStockOrgId") as DynamicObject; - return org != null && Convert.ToInt32(org["Id"]) != 101542; + return org != null && Convert.ToInt32(org["Id"]) == 101542; } ///