diff --git a/unimarc/unimarc/Helper/Database.cs b/unimarc/unimarc/Helper/Database.cs
index 5454195..91062a3 100644
--- a/unimarc/unimarc/Helper/Database.cs
+++ b/unimarc/unimarc/Helper/Database.cs
@@ -295,7 +295,7 @@ namespace UniMarc
}
- public static (bool result, int newidx, string message) UpdateMarc(int midx, string FullMarc, int v_grade,
+ public static (bool result, int newidx, string message,string date) UpdateMarc(int midx, string FullMarc, int v_grade,
string etc1, string etc2, string url, string v_orgmarc)
{
var isUpdate = midx > 0;
@@ -307,7 +307,7 @@ namespace UniMarc
//상황에 맞게 업데이트 명령을 처리한다.
var basicinfo = GetBasicMarcInfo(FullMarc);
- if (basicinfo.Success == false) return (false, 0, basicinfo.Message);
+ if (basicinfo.Success == false) return (false, 0, basicinfo.Message,v_date);
@@ -392,10 +392,10 @@ namespace UniMarc
var ret = Helper_DB.ExcuteNonQuery(U_cmd);
if (ret.applyCount != 1)
{
- return (false, midx, $"업데이트된 행의 수가 1이 아닙니다. 적용된 행 수: {ret.applyCount}, 오류 메시지: {ret.errorMessage}");
+ return (false, midx, $"업데이트된 행의 수가 1이 아닙니다. 적용된 행 수: {ret.applyCount}, 오류 메시지: {ret.errorMessage}", v_date);
}
}
- return (true, midx, string.Empty);
+ return (true, midx, string.Empty, v_date);
}
}
diff --git a/unimarc/unimarc/PUB.cs b/unimarc/unimarc/PUB.cs
index 55bd889..29af98e 100644
--- a/unimarc/unimarc/PUB.cs
+++ b/unimarc/unimarc/PUB.cs
@@ -55,7 +55,7 @@ namespace UniMarc
string Empty_text = string.Format(
"020\t \t▼a{1}▼c\\{5}▲\n" +
"056\t \t▼a▼25▲\n" +
- "100\t \t▼a{2}▲\n" +
+ "100\t \t▼a{3}▲\n" +
"245\t \t▼a{2}▼d{3}▲\n" +
"260\t \t▼b{4}▲\n" +
"300\t \t▼a▼c▲\n" +
diff --git a/unimarc/unimarc/Properties/AssemblyInfo.cs b/unimarc/unimarc/Properties/AssemblyInfo.cs
index 3d55692..f7f6479 100644
--- a/unimarc/unimarc/Properties/AssemblyInfo.cs
+++ b/unimarc/unimarc/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
// 기본값으로 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2026.03.02.1630")]
-[assembly: AssemblyFileVersion("2026.03.02.1630")]
+[assembly: AssemblyVersion("2026.03.08.1700")]
+[assembly: AssemblyFileVersion("2026.03.08.1700")]
diff --git a/unimarc/unimarc/마크/Marc2.cs b/unimarc/unimarc/마크/Marc2.cs
index 7f4ee8c..9884204 100644
--- a/unimarc/unimarc/마크/Marc2.cs
+++ b/unimarc/unimarc/마크/Marc2.cs
@@ -948,7 +948,6 @@ namespace UniMarc
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string orimarc = marcEditorControl1.MakeMarcString();
-
//아래는 실제 폼에서의 저장코드
// [신규 방식: 데이터 객체(Item) 중심 로직]
var item = this.dataList.Where(t => t.ListIdx == this.Param.ListIdx).FirstOrDefault();
@@ -959,18 +958,12 @@ namespace UniMarc
// cb_grade.SelectedIndex.ToString(); // 등급은 0~3의 숫자로 저장된다고 가정
var v_grade = uC_SelectGrade1.Grade == -1 ? "" : uC_SelectGrade1.Grade.ToString();
- //if (radA.Checked) v_grade = "0";
- //else if (radB.Checked) v_grade = "1";
- //else if (radC.Checked) v_grade = "2";
- //else if (radD.Checked) v_grade = "3";
-
var v_etc1 = this.etc1.Text.Trim();
var v_etc2 = this.etc2.Text.Trim();
// 1. DB 작업 (공용 메서드로 통합 관리)
int targetMarcIdx = (item.Status == MarcRecordStatus.MyCompany) ? item.MarcIdx : 0;
var saveResult = Helper_DB.UpdateMarc(targetMarcIdx, orimarc, uC_SelectGrade1.Grade, v_etc1, v_etc2, this.Param.URL, this.Param.OriginalMarc);
-
if (saveResult.result == false)
{
UTIL.MsgE(saveResult.message);
@@ -978,20 +971,38 @@ namespace UniMarc
}
// 새로 생성된 인덱스 반영
- item.MarcIdx = saveResult.newidx;
-
-
+ if(saveResult.newidx != item.MarcIdx)
+ {
+ Console.WriteLine($"new marc index set : {item.MarcIdx} to {saveResult.newidx}");
+ item.MarcIdx = saveResult.newidx;
+ }
+
// 2. 객체 데이터 업데이트 및 시각적 상태 계산
item.Status = MarcRecordStatus.MyCompany;
item.BackColor = GetSaveDateColor(date);
item.Grade = v_grade; //등급업데이트추가
+ item.DbMarc = orimarc;
+
+ SetMarcItemInfo(item,
+ saveResult.newidx,
+ PUB.user.CompanyIdx,
+ orimarc,
+ v_grade,
+ PUB.user.UserName,
+ saveResult.date,
+ string.Empty);
+
+
// 3. 목록 인덱스 연동 업데이트 (Obj_List_Book)
string UpdateListIndex = string.Format("UPDATE `Obj_List_Book` SET `m_idx` = {0} WHERE `idx` = {1} AND `compidx` = \"{2}\";", item.MarcIdx, item.ListIdx, mCompidx);
Helper_DB.ExcuteNonQuery(UpdateListIndex);
+ //업데이트되도록 원래데이터를 초기화한다 260308
+ mOldMarc = string.Empty;
+ mOldMarIdx = -1;
+
// 4. BindingSource 갱신으로 UI 자동 업데이트
- bs1.ResetCurrentItem();
bs1_CurrentChanged(null, null);
UTIL.MsgI("저장되었습니다!");
}
@@ -1080,7 +1091,13 @@ namespace UniMarc
{
if (!mLoadCompleted) return;
var dr = bs1.Current as MarcBookItem;
- if (dr == null) return;
+ if (dr == null)
+ {
+ mOldMarIdx = -1;
+ return;
+ }
+
+ if (mOldMarc == null) mOldMarc = string.Empty;
//if (List_Book.CurrentCell == null) return;
//int row_idx = List_Book.CurrentCell.RowIndex;
@@ -1152,26 +1169,27 @@ namespace UniMarc
OriginalMarc = dbMarc,
};
var defMarc = PUB.MakeEmptyMarc(isbn13, bookName, author, publisher, price);
- marcEditorControl1.LoadBookData(dbMarc, isbn13, defMarc);
+ var load_ret = marcEditorControl1.LoadBookData(dbMarc, isbn13, defMarc);
//등급선택 (dbMarc 데이터를 확인하여. 등급을 결정한다)
int gradeNo;
- bool check_Marc = dbMarc.Length >= 3;
- if (!check_Marc)
+ if (load_ret ==false)
{
//richTextBox1.Text = Make_Empty();
gradeNo = 3; //마크가 없는것은 D등급으로 한다
+ remark.remark1 = string.Empty;
+ remark.remark2 = string.Empty;
}
else
{
- etc1.Text = remark.remark1;
- etc2.Text = remark.remark2;
-
//자료의 등급 다시 선택
if (int.TryParse(grade, out gradeNo) == false)
gradeNo = 2;
}
+ etc1.Text = remark.remark1;
+ etc2.Text = remark.remark2;
+
uC_SelectGrade1.Grade = gradeNo;
lbl_SaveData.Multiline = true;
diff --git a/unimarc/unimarc/마크/MarcEditorControl.cs b/unimarc/unimarc/마크/MarcEditorControl.cs
index 0c830b1..0735f03 100644
--- a/unimarc/unimarc/마크/MarcEditorControl.cs
+++ b/unimarc/unimarc/마크/MarcEditorControl.cs
@@ -122,7 +122,7 @@ namespace UniMarc
///
///
///
- public void LoadBookData(string dbMarc, string isbn = "", string defaultMarc = "")
+ public bool LoadBookData(string dbMarc, string isbn = "", string defaultMarc = "")
{
mLoadCompleted = false;
richTextBox1.Text = "";
@@ -182,6 +182,8 @@ namespace UniMarc
UpdateTextColor();
mLoadCompleted = true;
+
+ return check_Marc;
}
diff --git a/unimarc/unimarc/마크/Marc_Plan.cs b/unimarc/unimarc/마크/Marc_Plan.cs
index 09fd749..1654bd5 100644
--- a/unimarc/unimarc/마크/Marc_Plan.cs
+++ b/unimarc/unimarc/마크/Marc_Plan.cs
@@ -173,7 +173,19 @@ namespace UniMarc
item.SBookNum2 = dr["s_book_num2"].ToString();
item.Author = dr["author"].ToString();
item.BookComp = dr["book_comp"].ToString();
- item.Price = dr["price"] != DBNull.Value ? Convert.ToInt32(dr["price"]) : 0;
+ if(dr["price"] ==DBNull.Value)
+ {
+ item.Price = 0;
+ }
+ else
+ {
+ var str_price = dr["price"].ToString();
+ if (int.TryParse(str_price, out int v_price))
+ item.Price = v_price;
+ else
+ item.Price = 0;
+ }
+
item.Midx = dr["midx"] != DBNull.Value ? Convert.ToInt32(dr["midx"]) : 0;
item.etc1 = dr["etc1"]?.ToString() ?? string.Empty;
item.etc2 = dr["etc2"]?.ToString() ?? string.Empty;
diff --git a/unimarc/unimarc/마크/Marc_Plan_Sub_SelectList.cs b/unimarc/unimarc/마크/Marc_Plan_Sub_SelectList.cs
index 6e3df83..9f7bbe3 100644
--- a/unimarc/unimarc/마크/Marc_Plan_Sub_SelectList.cs
+++ b/unimarc/unimarc/마크/Marc_Plan_Sub_SelectList.cs
@@ -307,7 +307,8 @@ namespace UniMarc
else if (v_110a.isEmpty() == false) v_author = v_110a;
else if (v_100a.isEmpty() == false) v_author = v_100a;
-
+ var str_price = fullparser.GetTag("950b").FirstOrDefault() ?? string.Empty;
+ int.TryParse(str_price, out int v_price);
var item = new MarcPlanItem
{
RegNum = fullparser.GetTag("049l").FirstOrDefault(),// Search_Res[0], 등록번호
@@ -324,7 +325,7 @@ namespace UniMarc
SBookNum2 = fullparser.GetTag("490v").FirstOrDefault(),//Search_Res[11],총서번호2
Author = v_author,
BookComp = fullparser.GetTag("260b").FirstOrDefault(),//Search_Res[12],출판사
- Price = Convert.ToInt32(fullparser.GetTag("950b").FirstOrDefault()),//Search_Res[13],정가
+ Price = v_price,//Convert.ToInt32(fullparser.GetTag("950b").FirstOrDefault()),//Search_Res[13],정가
Marc = fullmarc,
ColCheck = "T"
};