();
+ for (var i = 0; i < existingCodes.Count; i++)
+ {
+ var code = existingCodes[i];
+ if (!string.IsNullOrWhiteSpace(code))
+ {
+ existingCodeSet.Add(code);
+ }
+ }
+
+ if (isClientTrade)
+ {
+ var maxNo = 0;
+ var prefixLen = prefix.Length;
+ for (var i = 0; i < existingCodes.Count; i++)
+ {
+ var code = existingCodes[i];
+ if (string.IsNullOrEmpty(code) || code.Length <= prefixLen)
+ {
+ continue;
+ }
+
+ var suffix = code.Substring(prefixLen);
+ if (int.TryParse(suffix, out var n) && n > maxNo)
+ {
+ maxNo = n;
+ }
+ }
+
+ var nextNo = maxNo + 1;
+ var contractNo = $"{prefix}{nextNo:D3}";
+ while (existingCodeSet.Contains(contractNo))
+ {
+ nextNo++;
+ contractNo = $"{prefix}{nextNo:D3}";
+ }
+ return contractNo;
+ }
+ else
+ {
+ var maxNo = 0;
+ var prefixLen = prefix.Length;
+ for (var i = 0; i < existingCodes.Count; i++)
+ {
+ var code = existingCodes[i];
+ if (string.IsNullOrEmpty(code) || code.Length <= prefixLen)
+ {
+ continue;
+ }
+
+ var suffix = code.Substring(prefixLen);
+ if (!TryParseLettersToNumber(suffix, out var n))
+ {
+ continue;
+ }
+
+ if (n > maxNo)
+ {
+ maxNo = n;
+ }
+ }
+
+ var nextNo = maxNo + 1;
+ var contractNo = $"{prefix}{NumberToLetter(nextNo)}";
+ while (existingCodeSet.Contains(contractNo))
+ {
+ nextNo++;
+ contractNo = $"{prefix}{NumberToLetter(nextNo)}";
+ }
+ return contractNo;
+ }
+ }
+ }
+
+ private static bool TryParseLettersToNumber(string letters, out int number)
+ {
+ number = 0;
+ if (string.IsNullOrEmpty(letters))
+ {
+ return false;
+ }
+
+ for (var i = 0; i < letters.Length; i++)
+ {
+ var c = letters[i];
+ if (c >= 'a' && c <= 'z')
+ {
+ c = (char)(c - 32);
+ }
+ else if (c < 'A' || c > 'Z')
+ {
+ number = 0;
+ return false;
+ }
+
+ number = (number * 26) + (c - 'A' + 1);
+ }
+ return true;
+ }
+
+ ///
+ /// 将数字转换为字母序列(1=A, 2=B, 26=Z, 27=AA, 28=AB...)
+ ///
+ private static string NumberToLetter(int number)
+ {
+ if (number <= 0)
+ {
+ return "A";
+ }
+
+ string result = "";
+ while (number > 0)
+ {
+ number--; // 调整为从0开始
+ result = (char)('A' + (number % 26)) + result;
+ number /= 26;
+ }
+ return result;
+ }
+ }
+}
diff --git a/YLErpDAL/Modules/TradeModule/DocGenerateModule/UploadContractFileNewResult.cs b/YLErpDAL/Modules/TradeModule/DocGenerateModule/UploadContractFileNewResult.cs
new file mode 100644
index 00000000..95da9835
--- /dev/null
+++ b/YLErpDAL/Modules/TradeModule/DocGenerateModule/UploadContractFileNewResult.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace YLErp.Modules.TradeModule.DocGenerateModule
+{
+ public sealed class UploadContractFileNewResult
+ {
+ public bool Success { get; set; }
+ public string Message { get; set; }
+ public DateTime OptDate { get; set; }
+ public string DocumentPath { get; set; }
+ }
+}
diff --git a/YLErpDAL/Modules/TradeModule/TradeOAService.cs b/YLErpDAL/Modules/TradeModule/TradeOAService.cs
index 88e081a4..79af5edc 100644
--- a/YLErpDAL/Modules/TradeModule/TradeOAService.cs
+++ b/YLErpDAL/Modules/TradeModule/TradeOAService.cs
@@ -296,7 +296,7 @@ namespace YLErp.Modules.TradeModule
htmb = 0,
//合同密级 0一般 1秘密 2绝密
qysdzz = "2809700652352016752",
- yyr = "yangx,yinfeng",
+ yyr = "yangx," + applicantLoginName,
hehj = 0,
//合同缓急 0一般 1紧急 2特急
//去除后缀
diff --git a/YLErpDAL/Modules/UnderlyingModule/UnderlyingDalService.cs b/YLErpDAL/Modules/UnderlyingModule/UnderlyingDalService.cs
index d9af5ba0..22011d3c 100644
--- a/YLErpDAL/Modules/UnderlyingModule/UnderlyingDalService.cs
+++ b/YLErpDAL/Modules/UnderlyingModule/UnderlyingDalService.cs
@@ -435,7 +435,7 @@ namespace YLErp.Modules.UnderlyingModule
dbModel.MarketCode = string.IsNullOrWhiteSpace(dbModel.MarketName) ? "" :
DataCacheProvider.GetMarketDataSource().AsQueryable().FirstOrDefault(n => n.MarketName == dbModel.MarketName)?.ExchangeNo;
}
- if (dbModel.ContractSize <= 1)
+ if (dbModel.ContractSize < 1)
{
dbModel.ContractSize = variety.TradeUnitValue > 0 ? variety.TradeUnitValue.Value : 1;
}
diff --git a/YLErpWeb/Controllers/TradeConfirmBookController.cs b/YLErpWeb/Controllers/TradeConfirmBookController.cs
index eace6701..14c0470d 100644
--- a/YLErpWeb/Controllers/TradeConfirmBookController.cs
+++ b/YLErpWeb/Controllers/TradeConfirmBookController.cs
@@ -782,9 +782,9 @@ namespace YLErp.Web.Controllers
///
/// 将上传确认书做成页面
///
- public ActionResult confirmBookUploadNew(string Id)
+ public ActionResult confirmBookUploadNew(int tradeId = 0)
{
- ViewBag.Id = Id;
+ ViewBag.TradeId = tradeId;
return View();
}
@@ -2631,4 +2631,4 @@ namespace YLErp.Web.Controllers
}
}
}
-}
\ No newline at end of file
+}
diff --git a/YLErpWeb/Controllers/tradeController.cs b/YLErpWeb/Controllers/tradeController.cs
index 990c31ee..0624d5ad 100644
--- a/YLErpWeb/Controllers/tradeController.cs
+++ b/YLErpWeb/Controllers/tradeController.cs
@@ -2032,22 +2032,16 @@ namespace YLErp.Web.Controllers
}
return JsonError(msg);
}
- public ActionResult UploadContractFileNew(string encryptId, bool isCounterpartyDoc = false)
- {
+ public ActionResult UploadContractFileNew(int tradeId, bool isCounterpartyDoc = false, bool useContractCode = false, string contractCode = null)
+ {
var uploadFileModel = Request.Form.Files.Count > 0 ? Request.Form.Files[0].ToUploadFileModel() : null;
- var docId = DataProtectHelper.DecryptInt(encryptId);
- var contractDoc = db.trade_contract_document.FirstOrDefault(o => o.id == docId);
- if (contractDoc == null)
- {
- return JsonError("未找到确认书数据");
- }
- var (flag, msg, optDate, stampPath) = new ConfirmationGenerateService(CurUser).UploadContractFileNew(contractDoc.Code, isCounterpartyDoc, uploadFileModel);
- if (flag)
+ var result = new ConfirmationGenerateService(CurUser).UploadContractFileNew(tradeId, useContractCode, contractCode, isCounterpartyDoc, uploadFileModel);
+ if (result.Success)
{
- return JsonSuccess(msg);
+ return JsonSuccess(result.Message);
}
- return JsonError(msg);
+ return JsonError(result.Message);
}
public ActionResult tradeContractManagementQuery(string tradeNumber)
@@ -8967,4 +8961,4 @@ namespace YLErp.Web.Controllers
#endregion
}
-}
\ No newline at end of file
+}
diff --git a/YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml b/YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml
index 6a395497..4133bbc4 100644
--- a/YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml
+++ b/YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml
@@ -420,13 +420,13 @@
|
-
+
|
-
+
|
-
+
|
{{item.underlying!=null?item.underlying.QuoteUnitString:''}}
@@ -503,7 +503,7 @@
起息日
- 扣除本金
+ 扣除本金
观察日间隔
@@ -601,4 +601,4 @@
-
\ No newline at end of file
+
diff --git a/YLErpWeb/Views/TradeConfirmBook/confirmBookUploadNew.cshtml b/YLErpWeb/Views/TradeConfirmBook/confirmBookUploadNew.cshtml
index f30dd95e..5f022100 100644
--- a/YLErpWeb/Views/TradeConfirmBook/confirmBookUploadNew.cshtml
+++ b/YLErpWeb/Views/TradeConfirmBook/confirmBookUploadNew.cshtml
@@ -1,11 +1,10 @@
-@{
+@{
ViewBag.Title = "confirmBookUploadNew";
Layout = "~/Views/Shared/_InfoLayout.cshtml";
var pageObj = new
{
- Id = ViewBag.Id,
- SendMailId = ViewBag.SendMailId
+ TradeId = ViewBag.TradeId
};
}
@@ -23,26 +22,34 @@
var page = @Json.Serialize(pageObj);
function UploadFiles1() {
- if (main.isEmpty(page.Id)) {
- main.message("还未生成确认书,无法上传");
+ var tradeId = page.TradeId;
+
+ if (main.isEmpty(tradeId)) {
+ main.message("缺少交易参数,无法上传");
return;
}
- //alert(tradeNumber);
- var encryptId = page.Id;
var files = $("#openFile")[0].files;
if (files.length <= 0) {
main.message("请选择需上传的文件");
return;
}
- var description = $("#fileDescription").val();
+ var useContractCode = $("#useContractCode").is(':checked');
+ var contractCode = $("#contractCode").val();
+
+ if (useContractCode && main.isEmpty(contractCode)) {
+ main.message("合约编号必填");
+ return;
+ }
var data = new FormData();
for (var x = 0; x < files.length; x++) {
data.append(files[x].name, files[x]);
}
- data.append("encryptId", encryptId);
+ data.append("tradeId", tradeId);
data.append("isCounterpartyDoc", $("#isCounterpartyDoc").is(':checked'));
+ data.append("useContractCode", useContractCode);
+ data.append("contractCode", contractCode);
$.ajax({
type: "Post",
@@ -67,6 +74,19 @@
}
});
}
+
+ function toggleContractCode() {
+ var useContractCode = $("#useContractCode").is(':checked');
+ $("#contractCode").prop("disabled", !useContractCode);
+ if (!useContractCode) {
+ $("#contractCode").val("");
+ }
+ }
+
+ $(function () {
+ $("#useContractCode").on("change", toggleContractCode);
+ toggleContractCode();
+ });
}
+
-
\ No newline at end of file
+
diff --git a/YLErpWeb/Views/client/_ClientEditFields.cshtml b/YLErpWeb/Views/client/_ClientEditFields.cshtml
index c8c5a4f2..f8065a25 100644
--- a/YLErpWeb/Views/client/_ClientEditFields.cshtml
+++ b/YLErpWeb/Views/client/_ClientEditFields.cshtml
@@ -95,11 +95,19 @@
-
+
}
else
{
-
+ if (f.maxLength.HasValue)
+ {
+
+ }
+ else
+ {
+
+ }
+
}
@if (f.required)
{
diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js
index 9922fb2e..6a68a4b1 100644
--- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js
+++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js
@@ -177,6 +177,16 @@ const vue = new Vue({
this.initSwapRateList();
},
methods: {
+ getPosiPriceFormat(item) {
+ return tradeHelper.IsBond(item && item.UnderlyingInstrumentType)
+ ? inputFormatMarginRateNoPercent
+ : inputFormatTradeSinglePrice;
+ },
+ getPosiPriceFormatKey(item, field) {
+ const index = item && item.index != null ? item.index : '';
+ const isBond = tradeHelper.IsBond(item && item.UnderlyingInstrumentType);
+ return `${index}-${field}-${isBond ? 'bond' : 'other'}`;
+ },
changeStructureType() {
this.trade.StockEqvNotional = 0;
//this.trade.trade_extend.ExtendObj.FlowBookMode = 0;
@@ -529,7 +539,7 @@ const vue = new Vue({
.done(function (resp) {
item.PosiNetNoFeePrice = otcformat.trading.umprice(resp.obj.netPrice);
item.PosiGrossPrice = otcformat.trading.umprice(resp.obj.price);
- thisObj.changeStockEqvNotional();
+ thisObj.calcNotional();
});
},
//年化利率变更同步修改 同行观察日利率
@@ -587,7 +597,7 @@ const vue = new Vue({
thisObj.observation.ObservationSettlementRules = observation ? observation.ObservationSettlementRules : 0;
}
thisObj.observation.IsDeductPrincipal = observation ? observation.IsDeductPrincipal : true;
- if (type == 0) {
+ if (type == 1) {
thisObj.observation.IsDeductPrincipal = false;
}
var startTime = thisObj.trade.TradeDate;
@@ -1544,4 +1554,4 @@ $(function () {
$(this).datepicker("setDate", dateVal);
});
-});
\ No newline at end of file
+});
diff --git a/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBook.js b/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBook.js
index 9d54a593..e0acfadb 100644
--- a/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBook.js
+++ b/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBook.js
@@ -1,4 +1,4 @@
-var valuedate = page.valuedate;
+var valuedate = page.valuedate;
var ContractTypeCtrl;
var ReportId;
@@ -354,8 +354,8 @@ const colModelGrid = (new function () {
end: function () { SearchClick(true) }
});
}
- this.uploadNew = function (encryptId) {
- var srcurl = "/TradeConfirmBook/confirmBookUploadNew/?Id=" + encryptId;
+ this.uploadNew = function (tradeId) {
+ var srcurl = "/TradeConfirmBook/confirmBookUploadNew/?tradeId=" + tradeId;
main.open("上传确认书", srcurl, {
area: ['500px', '420px'],
end: function () { SearchClick(true) }
@@ -935,8 +935,8 @@ function showToolName(cellValue, options, rowObject) {
html += ""
.template(rowObject.EncryptId, "发送Email");
}
- var canUpload = page.canGenerate == true ? "" : "disabled";
- html += "".template(rowObject.MetaDic.ContractEncryptId, canUpload);
+ html += ""
+ .template(rowObject.id);
html += "".template(rowObject.id);
return html;
}
@@ -1321,4 +1321,4 @@ function submitOA(id) {
}).fail(function (xhr, status, error) {
SearchClick(true);
});
-}
\ No newline at end of file
+}
diff --git a/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBookListByClient.js b/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBookListByClient.js
index 18035f3b..15a4e26b 100644
--- a/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBookListByClient.js
+++ b/YLErpWeb/wwwroot/Scripts/app/trade/tradeConfirmBookListByClient.js
@@ -56,8 +56,8 @@ const colModelGrid = (new function () {
end: function () { SearchClick(true) }
});
}
- this.uploadNew = function (encryptId) {
- var srcurl = "/TradeConfirmBook/confirmBookUploadNew/?Id=" + encryptId;
+ this.uploadNew = function (tradeId) {
+ var srcurl = "/TradeConfirmBook/confirmBookUploadNew/?tradeId=" + tradeId;
main.open("上传确认书", srcurl, {
area: ['500px', '420px'],
end: function () { SearchClick(true) }
@@ -256,7 +256,8 @@ function showToolName(cellValue, options, rowObject) {
.template(rowObject.EncryptId, "发送Email");
}
var canUpload = page.canGenerate == true && rowObject.ContractDocUrl ? "" : "disabled";
- html += "".template(rowObject.ContractCode, canUpload);
+ html += ""
+ .template(rowObject.tradeIds && rowObject.tradeIds.length > 0 ? rowObject.tradeIds[0] : 0, canUpload);
return html;
}
|