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;
}
///