diff --git a/UFIDA.U8.Framework.Api.Common/Entity/SysU8VoucherDefine.cs b/UFIDA.U8.Framework.Api.Common/Entity/SysU8VoucherDefine.cs
index b3cc992..1db723c 100644
--- a/UFIDA.U8.Framework.Api.Common/Entity/SysU8VoucherDefine.cs
+++ b/UFIDA.U8.Framework.Api.Common/Entity/SysU8VoucherDefine.cs
@@ -49,5 +49,17 @@ namespace UFIDA.U8.Framework.Api.Common.Entity
[SugarColumn(ColumnDescription = "是否输出DOM")]
public bool bPrintDom { get; set; }
+ ///
+ /// 是否流程控制
+ ///
+ [SugarColumn(ColumnDescription = "是否流程控制")]
+ public bool iswfcontrolled { get; set; }
+
+ ///
+ /// 流程控制字段
+ ///
+ [SugarColumn(ColumnDescription = "流程控制字段")]
+ public string cFlowFieldName { get; set; }
+
}
}
diff --git a/UFIDA.U8.Framework.Api.ControlObject/PU/clsVoucherCO_PU.cs b/UFIDA.U8.Framework.Api.ControlObject/PU/clsVoucherCO_PU.cs
index f401b8f..7ab68bf 100644
--- a/UFIDA.U8.Framework.Api.ControlObject/PU/clsVoucherCO_PU.cs
+++ b/UFIDA.U8.Framework.Api.ControlObject/PU/clsVoucherCO_PU.cs
@@ -1,8 +1,10 @@
using ADODB;
using log4net;
+using Microsoft.VisualBasic;
using MSXML2;
using System;
using System.Collections.Generic;
+using System.Diagnostics;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
@@ -61,8 +63,10 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU
///
///
///
+ ///
+ ///
///
- public async Task> VoucherSave(BaseLogin baseLogin, Dictionary dictionary, string cardNumber, vouchertype enmVoucherType, bool bPositive = true, string sBillType = null, string sBusType = null, int VoucherState = 2, UseMode UserMode = UseMode.CS, string sOverDetailsXml = null, bool bGetCode = false, string codeKey = null, bool bAudit = false, bool bPrintDom = false)
+ public async Task> VoucherSave(BaseLogin baseLogin, Dictionary dictionary, string cardNumber, vouchertype enmVoucherType, bool bPositive = true, string sBillType = null, string sBusType = null, int VoucherState = 2, UseMode UserMode = UseMode.CS, string sOverDetailsXml = null, bool bGetCode = false, string codeKey = null, bool bAudit = false, bool bPrintDom = false,bool iswfcontrolled=false,string cFlowFieldName= "IsWfControlled")
{
try
{
@@ -129,9 +133,8 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU
IXMLDOMDocument2 domMsg = new DOMDocument();
IXMLDOMDocument2 curDom = new DOMDocument();
- co.bOutTrans = true;
-
- baseLogin.Connection.BeginTrans();
+
+
logInfo.Debug($"{baseLogin.Connection.State},{baseLogin.Connection.ConnectionString}");
@@ -140,11 +143,24 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU
var res = new BaseResult();
+ if (bAudit)
+ {
+ logInfo.Debug("开始事务...");
+ co.bOutTrans = true;
+
+ baseLogin.Connection.BeginTrans();
+ }
+
try
{
logInfo.Debug("开始保存...");
- errorMsg = co.VoucherSave(ref domHead, ref domBody, VoucherState, ref vouchId, ref curDom, UserMode, sOverDetailsXml, ref domMsg);
+
+ errorMsg = bAudit
+ ? (string)co.VoucherSave2(ref domHead, ref domBody, VoucherState, ref vouchId, sOverDetailsXml, ref domMsg)
+ : (string)co.VoucherSave(ref domHead, ref domBody, VoucherState, ref vouchId, ref curDom, UserMode, sOverDetailsXml, ref domMsg);
+
+
logInfo.Debug("保存结束...");
logInfo.Debug(errorMsg);
logInfo.Debug($"{vouchId}");
@@ -153,15 +169,6 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU
if (!res.bSuccess)
{
- try
- {
- baseLogin.Connection.RollbackTrans();
- }
- catch (Exception ex)
- {
- logInfo.Error(ex.Message, ex);
- }
-
if (!string.IsNullOrWhiteSpace(errorMsg))
{
throw new Exception(errorMsg);
@@ -177,8 +184,20 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU
throw new Exception(curDom.xml);
}
+ throw new Exception("未知错误");
+
}
+ if (iswfcontrolled == false && VoucherState == 2)
+ {
+ var strSql = $"UPDATE {vouchers.cBTTblName} SET {cFlowFieldName} = 0 WHERE {vouchers.voucherIdFieldName}={vouchId}";
+
+ object rsts = new Recordset();
+
+ baseLogin.Connection.Execute(strSql,out rsts);
+ }
+
+
res.voucherCode = CommonHelper.GetVoucherCode(baseLogin.Connection, vouchId, vouchers);
res.voucherId = $"{vouchId}";
res.result = errorMsg;
@@ -186,7 +205,16 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU
}
catch (Exception)
{
- baseLogin.Connection.RollbackTrans();
+ try
+ {
+ if (bAudit)
+ baseLogin.Connection.RollbackTrans();
+ }
+ catch(Exception ex)
+ {
+ Trace.WriteLine(ex.Message);
+ }
+
throw;
}
@@ -194,7 +222,8 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU
if (!res.bSuccess)
{
res.message = "保存失败";
- baseLogin.Connection.RollbackTrans();
+ if (bAudit)
+ baseLogin.Connection.RollbackTrans();
return res;
}
@@ -225,9 +254,15 @@ namespace UFIDA.U8.Framework.Api.ControlObject.PU
}
}
- logInfo.Debug("提交事务...");
+
- baseLogin.Connection.CommitTrans();
+ if (bAudit)
+ {
+ logInfo.Debug("提交事务...");
+
+ baseLogin.Connection.CommitTrans();
+ }
+
return res;
diff --git a/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs b/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs
index 91787c2..be6fc5d 100644
--- a/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs
+++ b/UFIDA.U8.Framework.Api.ControlObject/ST/USERPCO.cs
@@ -122,6 +122,9 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
IXMLDOMDocument2 domMsg = new DOMDocument();
errorMsg = "";
+
+ var vouchers = CommonHelper.GetVouchers(baseLogin.Connection, cCardNum);
+
baseLogin.Connection.BeginTrans();
object vouchId = "";
@@ -140,125 +143,71 @@ namespace UFIDA.U8.Framework.Api.ControlObject.ST
}
logInfo.Debug("执行插入操作...");
- //var cmd = new Command
- //{
- // CommandText = "Select '开始执行插入操作'",
- // ActiveConnection = baseLogin.Connection
- //};
- //object rsts = new Recordset();
- //cmd.Execute(out rsts);
res.bSuccess = co.Insert(sVouchType, domHead, domBody, null, ref errorMsg, baseLogin.Connection, ref vouchId, ref domMsg, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote);
if (res.bSuccess)
{
res.voucherId = $"{vouchId}";
logInfo.Debug($"操作完成,操作结果:成功!------[{vouchId}]------[{errorMsg}]------[{domMsg.xml}]");
+
+ res.voucherCode = CommonHelper.GetVoucherCode(baseLogin.Connection, vouchId, vouchers);
+
+ if (bAudit)
+ {
+ var res2 = co.Verify(sVouchType, vouchId, ref errorMsg, baseLogin.Connection, null, ref domMsg);
+
+ if (!res2)
+ {
+ baseLogin.Connection.RollbackTrans();
+
+ if (!string.IsNullOrWhiteSpace(errorMsg))
+ throw new Exception(errorMsg);
+
+ if (!string.IsNullOrWhiteSpace(domMsg.xml))
+ throw new Exception(domMsg.xml);
+
+ throw new Exception("审核单据时发生异常,请检查数据");
+ }
+
+ baseLogin.Connection.CommitTrans();
+
+ res.message = "新增成功";
+ }
+
+ res.message = "新增成功";
+
}
else
{
logInfo.Debug($"操作完成,操作结果:失败!------[{vouchId}]------[{errorMsg}]------[{domMsg.xml}]");
+
+ baseLogin.Connection.RollbackTrans();
+
+ if (!string.IsNullOrWhiteSpace(errorMsg))
+ throw new Exception(errorMsg);
+
+ if (!string.IsNullOrWhiteSpace(domMsg.xml))
+ throw new Exception(domMsg.xml);
+
+ throw new Exception("新增单据时发生异常,请检查数据");
}
}
catch (Exception)
{
baseLogin.Connection.RollbackTrans();
- await Task.Delay(1);
throw;
}
- res.message = errorMsg;
-
- if (res.bSuccess && bAudit)
- {
- errorMsg = "";
- try
- {
- if (!co.Verify(sVouchType, vouchId, ref errorMsg, baseLogin.Connection, null, ref domMsg))
- {
- baseLogin.Connection.RollbackTrans();
-
- if (!string.IsNullOrWhiteSpace(errorMsg))
- throw new Exception(errorMsg);
-
- throw new Exception("审核单据时发生异常,请检查数据");
- }
- }
- catch (Exception)
- {
- baseLogin.Connection.RollbackTrans();
- res.bSuccess = false;
- throw;
- }
- }
-
- if (!res.bSuccess)
- {
- baseLogin.Connection.RollbackTrans();
-
- if (!string.IsNullOrWhiteSpace(errorMsg))
- throw new Exception(errorMsg);
-
- throw new Exception(domMsg.xml);
- }
-
- baseLogin.Connection.CommitTrans();
-
- var rst = new Recordset();
- rst.Open($"SELECT CardNumber,BTTblName,BTQName,BWTblName,BWQName,VchListQName,VchTblPrimarykeyNames,ReceiptNOFieldName FROM dbo.vouchers WITH(NOLOCK) WHERE CardNumber='{cCardNum}'", baseLogin.Connection);
-
- if (rst.BOF || rst.EOF)
- {
- res.bSuccess = false;
- res.result = $"已在U8生成单据ID为{vouchId}的单据,但是未能查询到该单据的配置信息!";
- }
- else
- {
- rst.MoveFirst();
- var fieldName = $"{rst.Fields["c"].Value}";
- var codeName = $"{rst.Fields["ReceiptNOFieldName"].Value}";
- if (string.IsNullOrWhiteSpace(fieldName) || string.IsNullOrWhiteSpace(codeName))
- {
- res.voucherCode = $"{res.voucherId}";
- }
- else
- {
- if (codeName.Contains("{##}"))
- {
- codeName = codeName.Split('{', '#', '#', '}')[0];
- }
-
- var strSql = $"SELECT {codeName} AS cCode FROM {rst.Fields["BTTblName"].Value} WITH(NOLOCK) WHERE {fieldName}='{vouchId}'";
- rst.Close();
-
- rst.Open(strSql, baseLogin.Connection);
-
- if (rst.EOF || rst.BOF)
- {
- res.voucherCode = "";
- }
- else
- {
- rst.MoveFirst();
- res.voucherCode = $"{rst.Fields["cCode"].Value}";
- }
- }
- }
-
- res.message = "新增成功";
- res.result = $"{vouchId}";
-
-
return res;
- //var bodys = dictionary.TryGetValue() dictionary["body"];
-
-
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
+ await Task.Delay(1);
+
return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message };
}
diff --git a/UFIDA.U8.Framework.Api/App_Data/API_Meta.db b/UFIDA.U8.Framework.Api/App_Data/API_Meta.db
index 7b2add4..9fabfea 100644
Binary files a/UFIDA.U8.Framework.Api/App_Data/API_Meta.db and b/UFIDA.U8.Framework.Api/App_Data/API_Meta.db differ
diff --git a/UFIDA.U8.Framework.Api/App_Data/U8API.xml b/UFIDA.U8.Framework.Api/App_Data/U8API.xml
index 1554f62..b5076d7 100644
--- a/UFIDA.U8.Framework.Api/App_Data/U8API.xml
+++ b/UFIDA.U8.Framework.Api/App_Data/U8API.xml
@@ -765,6 +765,90 @@
为空
+
+
+ 弃审单据(单号)
+
+ 系统号
+ 单据类型编码
+ 单号
+ 红蓝标识:True,蓝字
+ 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2)
+ 业务类型:普通采购,直运采购,受托代销
+ CS 0,BS 1;一般CS
+ 为空
+
+
+
+
+ 弃审单据(ID)
+
+ 系统号
+ 单据类型编码
+ 单据ID
+ 红蓝标识:True,蓝字
+ 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2)
+ 业务类型:普通采购,直运采购,受托代销
+ CS 0,BS 1;一般CS
+ 为空
+
+
+
+
+ 弃审单据(批量)
+
+ 系统号
+ 单据类型编码
+ 报文
+ 红蓝标识:True,蓝字
+ 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2)
+ 业务类型:普通采购,直运采购,受托代销
+ CS 0,BS 1;一般CS
+ 为空
+
+
+
+
+ 删除单据(单号)
+
+ 系统号
+ 单据类型编码
+ 单号
+ 红蓝标识:True,蓝字
+ 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2)
+ 业务类型:普通采购,直运采购,受托代销
+ CS 0,BS 1;一般CS
+ 为空
+
+
+
+
+ 删除单据(ID)
+
+ 系统号
+ 单据类型编码
+ 单据ID
+ 红蓝标识:True,蓝字
+ 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2)
+ 业务类型:普通采购,直运采购,受托代销
+ CS 0,BS 1;一般CS
+ 为空
+
+
+
+
+ 删除单据(批量)
+
+ 系统号
+ 单据类型编码
+ 报文
+ 红蓝标识:True,蓝字
+ 发票类型(普通发票 ppurbill,专用发票 purbill,运费发票 ypurbill);到货单类型(到货单 0,退货单 1,拒收单 2)
+ 业务类型:普通采购,直运采购,受托代销
+ CS 0,BS 1;一般CS
+ 为空
+
+
车间管理
diff --git a/UFIDA.U8.Framework.Api/App_Data/请购单模板.json b/UFIDA.U8.Framework.Api/App_Data/请购单模板.json
new file mode 100644
index 0000000..e2efae5
--- /dev/null
+++ b/UFIDA.U8.Framework.Api/App_Data/请购单模板.json
@@ -0,0 +1,17 @@
+{
+ "ddate": "2025-05-08",
+ "ccode": "0000000001",
+ "cbustype": "普通采购",
+ "cmaker": "demo",
+ "iswfcontrolled": 0,
+ "body": [
+ {
+ "cinvcode": "01019002063",
+ "fquantity": 3,
+ "editprop": "A",
+ "drequirdate": "2025-05-08",
+ "darrivedate": "2025-05-08",
+ "iexchrate": 1
+ }
+ ]
+}
\ No newline at end of file
diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs
index c7fbbb6..455a23c 100644
--- a/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs
+++ b/UFIDA.U8.Framework.Api/Controllers/U8/PUController.cs
@@ -148,7 +148,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var co = new clsVoucherCO_PU();
- var res = await co.VoucherSave(baseLogin, input, cCardNum, (vouchertype)Convert.ToInt32(voucherInfo.VoucherType), bPositive, sBillType, sBusType, VoucherState, UserMode, sOverDetailsXml, bGetCode, codeKey, voucherInfo.bVerify, voucherInfo.bPrintDom);
+ var res = await co.VoucherSave(baseLogin, input, cCardNum, (vouchertype)Convert.ToInt32(voucherInfo.VoucherType), bPositive, sBillType, sBusType, VoucherState, UserMode, sOverDetailsXml, bGetCode, codeKey, voucherInfo.bVerify, voucherInfo.bPrintDom,voucherInfo.iswfcontrolled,voucherInfo.cFlowFieldName);
return res;
}
diff --git a/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj b/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj
index be862b1..9999079 100644
--- a/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj
+++ b/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj
@@ -485,6 +485,7 @@
+
Designer