기능 추가 구현 및 수정

- 증명서 후 결재 기능 추가
- 결제 취소 기능 구현
This commit is contained in:
2023-10-26 22:03:01 +09:00
parent 6ffb2bbf5f
commit 958477db56
10 changed files with 322 additions and 112 deletions

View File

@@ -28,7 +28,7 @@
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.dataGridView_List = new System.Windows.Forms.DataGridView();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.metroDateTime_EndDate = new MetroFramework.Controls.MetroDateTime();
@@ -38,6 +38,8 @@
this.metroLabel1 = new MetroFramework.Controls.MetroLabel();
this.metroButton_RePrint = new MetroFramework.Controls.MetroButton();
this.metroButton_ExportExcel = new MetroFramework.Controls.MetroButton();
this.metroButton_PaymentOk = new MetroFramework.Controls.MetroButton();
this.metroButton_PaymentCancel = new MetroFramework.Controls.MetroButton();
((System.ComponentModel.ISupportInitialize)(this.dataGridView_List)).BeginInit();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
@@ -51,14 +53,14 @@
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView_List.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dataGridView_List.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle2.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
this.dataGridView_List.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView_List.Location = new System.Drawing.Point(20, 120);
this.dataGridView_List.Name = "dataGridView_List";
@@ -132,9 +134,9 @@
//
this.metroButton_RePrint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.metroButton_RePrint.FontSize = MetroFramework.MetroButtonSize.Tall;
this.metroButton_RePrint.Location = new System.Drawing.Point(534, 70);
this.metroButton_RePrint.Location = new System.Drawing.Point(554, 49);
this.metroButton_RePrint.Name = "metroButton_RePrint";
this.metroButton_RePrint.Size = new System.Drawing.Size(100, 40);
this.metroButton_RePrint.Size = new System.Drawing.Size(80, 40);
this.metroButton_RePrint.TabIndex = 15;
this.metroButton_RePrint.Text = "재 인쇄";
this.metroButton_RePrint.UseSelectable = true;
@@ -153,11 +155,37 @@
this.metroButton_ExportExcel.UseSelectable = true;
this.metroButton_ExportExcel.Click += new System.EventHandler(this.metroButton_ExportExcel_Click);
//
// metroButton_PaymentOk
//
this.metroButton_PaymentOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.metroButton_PaymentOk.FontSize = MetroFramework.MetroButtonSize.Tall;
this.metroButton_PaymentOk.Location = new System.Drawing.Point(456, 24);
this.metroButton_PaymentOk.Name = "metroButton_PaymentOk";
this.metroButton_PaymentOk.Size = new System.Drawing.Size(80, 40);
this.metroButton_PaymentOk.TabIndex = 16;
this.metroButton_PaymentOk.Text = "결제 확인";
this.metroButton_PaymentOk.UseSelectable = true;
this.metroButton_PaymentOk.Click += new System.EventHandler(this.metroButton_PaymentOk_Click);
//
// metroButton_PaymentCancel
//
this.metroButton_PaymentCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.metroButton_PaymentCancel.FontSize = MetroFramework.MetroButtonSize.Tall;
this.metroButton_PaymentCancel.Location = new System.Drawing.Point(456, 70);
this.metroButton_PaymentCancel.Name = "metroButton_PaymentCancel";
this.metroButton_PaymentCancel.Size = new System.Drawing.Size(80, 40);
this.metroButton_PaymentCancel.TabIndex = 17;
this.metroButton_PaymentCancel.Text = "결제 취소";
this.metroButton_PaymentCancel.UseSelectable = true;
this.metroButton_PaymentCancel.Click += new System.EventHandler(this.metroButton_PaymentCancel_Click);
//
// ListCertificate
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.Controls.Add(this.metroButton_PaymentCancel);
this.Controls.Add(this.metroButton_PaymentOk);
this.Controls.Add(this.metroButton_RePrint);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.metroButton_ExportExcel);
@@ -182,5 +210,7 @@
private MetroFramework.Controls.MetroLabel metroLabel2;
private MetroFramework.Controls.MetroLabel metroLabel1;
private MetroFramework.Controls.MetroButton metroButton_RePrint;
private MetroFramework.Controls.MetroButton metroButton_PaymentOk;
private MetroFramework.Controls.MetroButton metroButton_PaymentCancel;
}
}

View File

@@ -1,4 +1,5 @@
using MetroFramework;
using HSUCO_Cargo_Garage_Operation_Program.CustomForm;
using MetroFramework;
using System;
using System.Collections.Generic;
using System.Data;
@@ -33,9 +34,9 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
}
}
}
private void metroButton_Search_Click(object sender, EventArgs e)
private void DataChange()
{
List<CertificateInformation> certificateInformation = Database.GetLedgerCertificate(metroDateTime_StartDate.Value, metroDateTime_EndDate.Value);
var dataTable = new DataTable();
@@ -48,10 +49,30 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
dataTable.Columns.Add("이용시작일");
dataTable.Columns.Add("이용종료일");
dataTable.Columns.Add("이용금액");
dataTable.Columns.Add("결재여부");
for (int i = 0; i < certificateInformation.Count; i++)
{
string payment = string.Empty;
switch (certificateInformation[i].PaymentStatus)
{
case EPaymentStatus.StandBy:
payment = "결재 대기";
break;
case EPaymentStatus.Use:
payment = "결재 완료";
break;
case EPaymentStatus.Refund:
payment = "환불";
break;
case EPaymentStatus.Delete:
payment = "삭제";
break;
}
dataTable.Rows
.Add(
@@ -63,7 +84,8 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
certificateInformation[i].CargoVehicleNumber,
certificateInformation[i].StartDate.ToString("yyyy-MM-dd"),
certificateInformation[i].EndDate.ToString("yyyy-MM-dd"),
certificateInformation[i].Amount
certificateInformation[i].Amount,
payment
);
}
@@ -71,16 +93,12 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
dataGridView_List.DataSource = dataTable;
dataGridView_List.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView_List.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
/*
dataGridView_List.Columns[0].MinimumWidth = 100;
dataGridView_List.Columns[0].FillWeight = 100;
}
private void metroButton_Search_Click(object sender, EventArgs e)
{
DataChange();
dataGridView_List.Columns[1].MinimumWidth = 100;
dataGridView_List.Columns[1].FillWeight = 100;
dataGridView_List.Columns[2].MinimumWidth = 60;
dataGridView_List.Columns[2].FillWeight = 60;
*/
}
private void metroButton_RePrint_Click(object sender, EventArgs e)
@@ -88,7 +106,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
int count = dataGridView_List.SelectedRows.Count;
if (count == 0)
{
MetroMessageBox.Show(this, "선택된 이용자가 없습니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
MetroMessageBox.Show(this, "선택된 증명서가 없습니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
@@ -105,5 +123,79 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
metroDateTime_StartDate.Value = metroDateTime_StartDate.Value.AddDays(1 - metroDateTime_StartDate.Value.Day);
metroDateTime_EndDate.Value = metroDateTime_EndDate.Value.AddMonths(1).AddDays(-metroDateTime_EndDate.Value.Day);
}
private void metroButton_PaymentOk_Click(object sender, EventArgs e)
{
int count = dataGridView_List.SelectedRows.Count;
if (count == 0)
{
MetroMessageBox.Show(this, "선택된 증명서가 없습니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
string issueNumber = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
CertificateInformation certificateInformation = Database.GetCertificate(issueNumber);
if(certificateInformation.PaymentStatus == EPaymentStatus.StandBy)
{
// 결재 금액 보여주기
EVehicleType eVehicleType = Database.GetUserListVehicleType(certificateInformation.UserNo);
int payBase = 0;
if (eVehicleType == EVehicleType.Large_Down || eVehicleType == EVehicleType.Large_Up)
{
payBase = Global.GlobalSettings.CargoLargeCertificateFee;
}
else
{
payBase = Global.GlobalSettings.CargoOversizedCertificateFee;
}
int month = Extends.GetProgressDays(certificateInformation.StartDate, certificateInformation.EndDate).Month;
int pay = month * payBase;
SetProceedsInfo setProceedsInfo = new SetProceedsInfo();
setProceedsInfo.No = certificateInformation.UserNo;
setProceedsInfo.Date = DateTime.Now;
setProceedsInfo.Type = EProceedsType.Certificate;
setProceedsInfo.Amount = pay;
string amount = string.Format("{0:N0} 원", setProceedsInfo.Amount);
var dialogResult = MetroMessageBox.Show(this, $"증명서 발급요금이 {amount} 발생했습니다. 결재하시겠습니까?", "Question", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (dialogResult == DialogResult.OK)
{
Database.UpdatePaymentCertificate(issueNumber, EPaymentStatus.Use);
Database.SetProceeds(setProceedsInfo);
DataChange();
}
}
else
{
MetroMessageBox.Show(this, "선택된 증명서는 결재 대기 상태가 아닙니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
private void metroButton_PaymentCancel_Click(object sender, EventArgs e)
{
int count = dataGridView_List.SelectedRows.Count;
if (count == 0)
{
MetroMessageBox.Show(this, "선택된 증명서가 없습니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
string issueNumber = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
CertificateInformation certificateInformation = Database.GetCertificate(issueNumber);
if (certificateInformation.PaymentStatus == EPaymentStatus.StandBy)
{
Database.UpdatePaymentCertificate(issueNumber, EPaymentStatus.Delete);
MetroMessageBox.Show(this, "처리되었습니다.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
DataChange();
}
else
{
MetroMessageBox.Show(this, "선택된 증명서는 결재 대기 상태가 아닙니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
}
}

View File

@@ -55,7 +55,7 @@
// metroButton_Save
//
this.metroButton_Save.FontSize = MetroFramework.MetroButtonSize.Tall;
this.metroButton_Save.Location = new System.Drawing.Point(20, 407);
this.metroButton_Save.Location = new System.Drawing.Point(20, 420);
this.metroButton_Save.Name = "metroButton_Save";
this.metroButton_Save.Size = new System.Drawing.Size(140, 40);
this.metroButton_Save.TabIndex = 8;
@@ -119,7 +119,7 @@
this.groupBox2.Controls.Add(this.metroTextBox_CargoLargeFee);
this.groupBox2.Controls.Add(this.metroLabel5);
this.groupBox2.Controls.Add(this.metroLabel6);
this.groupBox2.Location = new System.Drawing.Point(20, 167);
this.groupBox2.Location = new System.Drawing.Point(20, 100);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(302, 100);
this.groupBox2.TabIndex = 20;
@@ -232,7 +232,7 @@
this.groupBox3.Controls.Add(this.metroTextBox_CargoLargeCertificateFee);
this.groupBox3.Controls.Add(this.metroLabel20);
this.groupBox3.Controls.Add(this.metroLabel21);
this.groupBox3.Location = new System.Drawing.Point(20, 297);
this.groupBox3.Location = new System.Drawing.Point(20, 220);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(304, 100);
this.groupBox3.TabIndex = 21;
@@ -340,7 +340,7 @@
// metroButton_init
//
this.metroButton_init.FontSize = MetroFramework.MetroButtonSize.Tall;
this.metroButton_init.Location = new System.Drawing.Point(184, 407);
this.metroButton_init.Location = new System.Drawing.Point(184, 420);
this.metroButton_init.Name = "metroButton_init";
this.metroButton_init.Size = new System.Drawing.Size(140, 40);
this.metroButton_init.TabIndex = 22;
@@ -350,7 +350,7 @@
//
// metroButton_Test
//
this.metroButton_Test.Location = new System.Drawing.Point(184, 453);
this.metroButton_Test.Location = new System.Drawing.Point(184, 466);
this.metroButton_Test.Name = "metroButton_Test";
this.metroButton_Test.Size = new System.Drawing.Size(140, 23);
this.metroButton_Test.TabIndex = 23;

View File

@@ -81,5 +81,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
LotsScreen lotsScreen = new LotsScreen(test);
lotsScreen.Show();
}
}
}

View File

@@ -28,7 +28,7 @@
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.metroRadioButton_EndUser = new MetroFramework.Controls.MetroRadioButton();
this.metroRadioButton_UseUser = new MetroFramework.Controls.MetroRadioButton();
@@ -376,14 +376,14 @@
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView_List.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dataGridView_List.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle2.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView_List.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
this.dataGridView_List.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView_List.Location = new System.Drawing.Point(20, 120);
this.dataGridView_List.MultiSelect = false;
@@ -416,6 +416,7 @@
this.metroButton_PaymentCancel.TabIndex = 17;
this.metroButton_PaymentCancel.Text = "결재 취소";
this.metroButton_PaymentCancel.UseSelectable = true;
this.metroButton_PaymentCancel.Click += new System.EventHandler(this.metroButton_PaymentCancel_Click);
//
// UserList
//

View File

@@ -4,7 +4,6 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Runtime.InteropServices.ComTypes;
using System.Text;
using System.Windows.Forms;
@@ -156,12 +155,15 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
case EVehicleType.Large_Down:
vehicleType = "대형(4.5톤 미만)";
break;
case EVehicleType.Large_Up:
vehicleType = "대형(4.5톤 이상)";
break;
case EVehicleType.Oversized_Down:
vehicleType = "특대형(4.5톤 미만)";
break;
case EVehicleType.Oversized_Up:
vehicleType = "특대형(4.5톤 이상)";
break;
@@ -418,12 +420,17 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
return;
}
string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
//TODO: 결재 완료자만 인증 가능
var status = Database.CheckPaymentStatus(no);
if (status != EPaymentStatus.Use)
{
MetroMessageBox.Show(this, "이용중인 사용자가 아닙니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
var result = MetroMessageBox.Show(this, "발급 하시겠습니까?", "증명서 발급", MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (result == DialogResult.No) return;
CertificateInformation certificateInformation = Database.GetUserCertificate(no);
Promotion promotion = new Promotion("증명서 인증 기간", "증명 시작일", "증명 종료일");
DialogResult promotionDialogResult = promotion.ShowDialog();
@@ -457,37 +464,11 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
setCertificateInformation.EndDate = promotion.EndDate;
setCertificateInformation.Amount = certificateInformation.Amount;
// 증명서 발급 요금 계산
EVehicleType eVehicleType = Database.GetUserListVehicleType(setCertificateInformation.UserNo);
int payBase = 0;
if (eVehicleType == EVehicleType.Large_Down || eVehicleType == EVehicleType.Large_Up)
{
payBase = Global.GlobalSettings.CargoLargeCertificateFee;
}
else
{
payBase = Global.GlobalSettings.CargoOversizedCertificateFee;
}
int month = Extends.GetProgressDays(promotion.StartDate, promotion.EndDate).Month;
int pay = month * payBase;
SetProceedsInfo setProceedsInfo = new SetProceedsInfo();
setProceedsInfo.No = setCertificateInformation.UserNo;
setProceedsInfo.Date = nowDateTime;
setProceedsInfo.Type = EProceedsType.Certificate;
setProceedsInfo.Amount = pay;
string amount = string.Format("{0:N0} 원", setProceedsInfo.Amount);
var dialogResult = MetroMessageBox.Show(this, $"증명서 발급요금이 {amount} 발생했습니다. 발급하시겠습니까?", "Question", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (dialogResult == DialogResult.OK)
{
Database.SetCertificate(setCertificateInformation);
Database.SetProceeds(setProceedsInfo);
var print = new PrintCertificate(new List<CertificateInformation>() { certificateInformation }, Global.GlobalSettings.GarageName);
print.Print();
}
}
private void metroButton_UpdateUserData_Click(object sender, EventArgs e)
{
@@ -532,7 +513,37 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
DataChange();
}
}
private void metroButton_PaymentCancel_Click(object sender, EventArgs e)
{
var selectCount = dataGridView_List.SelectedRows.Count;
if (selectCount == 0) return;
string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
var status = Database.CheckPaymentStatus(no);
if (status != EPaymentStatus.Use)
{
MetroMessageBox.Show(this, "현재 사용자는 결재 취소가 불가능한 사용자 입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
var proceedData = Database.GetLedgerProceedUser(no);
int feesPay = proceedData.Where(x => x.Type == EProceedsType.Fees).Select(x => x.Amount).Sum();
int certificatePay = proceedData.Where(x => x.Type == EProceedsType.Certificate).Select(x => x.Amount).Sum();
int extensionFeesPay = proceedData.Where(x => x.Type == EProceedsType.ExtensionFees).Select(x => x.Amount).Sum();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine("선택하신 사용자의 수납데이터가 아래와 같이 존재합니다.");
stringBuilder.AppendLine($"이\u3000용 요금 : {string.Format("{0:N0} ", feesPay)}");
stringBuilder.AppendLine($"증명서 요금 : {string.Format("{0:N0} ", certificatePay)}");
stringBuilder.AppendLine($"연\u3000장 요금 : {string.Format("{0:N0} ", extensionFeesPay)}");
stringBuilder.AppendLine($"결재 데이터를 모두 삭제하시겠습니까?");
var result = MetroMessageBox.Show(this, stringBuilder.ToString(), "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (result == DialogResult.Yes)
{
Database.DeleteUserPayment(no);
MetroMessageBox.Show(this, "완료되었습니다.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
DataChange();
}
}
private void metroButton_DeleteStandBy_Click(object sender, EventArgs e)
{
var selectCount = dataGridView_List.SelectedRows.Count;
@@ -557,16 +568,13 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
MetroMessageBox.Show(this, "이미 해당자리에 다른 사용자가 있습니다..", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return;
}
else if (status != EPaymentStatus.StandBy)
{
MetroMessageBox.Show(this, "현재 사용자는 삭제처리할수 없는 사용자 입니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Database.DeleteUser(no);
MetroMessageBox.Show(this, "해당 사용자를 제거 완료했습니다.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
DataChange();
@@ -579,8 +587,6 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
string no = dataGridView_List.SelectedRows[0].Cells[0].Value.ToString();
UserInformation user = Database.GetUser(no);
// 유저의 개인정보
// StartDate 와 EndDate 가져오기
EVehicleType eVehicleType = Database.GetApplicantVehicleType(no);
LeftAreaInformation leftAreaInformation = Database.GetLeftArea(user.DateStart);
@@ -606,9 +612,8 @@ namespace HSUCO_Cargo_Garage_Operation_Program.CustomUserControl
MetroMessageBox.Show(this, "변경에 실패하였습니다..", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}
}

View File

@@ -89,6 +89,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public struct CertificateInformation // 인쇄용
{
public string UserNo { get; set; }
public string Name { get; set; }
public string PersonalNumber { get; set; }
public string Address { get; set; }
@@ -99,6 +100,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public DateTime IssueDate { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public EPaymentStatus PaymentStatus { get; set; }
}
/// <summary>

View File

@@ -4,6 +4,7 @@ using System.Data.SQLite;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace HSUCO_Cargo_Garage_Operation_Program
{
@@ -53,6 +54,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
""StartDate"" TEXT NOT NULL,
""EndDate"" TEXT NOT NULL,
""Amount"" INTEGER NOT NULL,
""PaymentStatus"" INTEGER NOT NULL,
FOREIGN KEY(""UserNo"") REFERENCES ""UserList"",
PRIMARY KEY(""No"")
);
@@ -1066,7 +1068,58 @@ namespace HSUCO_Cargo_Garage_Operation_Program
}
return ResultSetUserListInformations;
}
public static void DeleteUserPayment(string no)
{
bool result = false;
var query = "UPDATE UserList SET PaymentStatus=@payment WHERE No=@no";
using(var updateCommand = _sqLiteConnection.CreateCommand())
{
updateCommand.CommandText = query;
updateCommand.Parameters.AddWithValue("@payment", EPaymentStatus.StandBy);
updateCommand.Parameters.AddWithValue("@no", no);
updateCommand.ExecuteNonQuery();
}
query = "DELETE FROM LedgerProceeds WHERE UserNo=@no";
using(var deleteCommand = _sqLiteConnection.CreateCommand())
{
deleteCommand.CommandText = query;
deleteCommand.Parameters.AddWithValue("@no", no);
deleteCommand.ExecuteNonQuery();
}
query = "DELETE FROM LedgerCertificate WHERE UserNo=@no";
using (var deleteCommand = _sqLiteConnection.CreateCommand())
{
deleteCommand.CommandText = query;
deleteCommand.Parameters.AddWithValue("@no", no);
deleteCommand.ExecuteNonQuery();
}
}
public static List<ProceedsData> GetLedgerProceedUser(string no)
{
var proceedsDatas = new List<ProceedsData>();
var query = "SELECT U.CargoVehicleNumber, U.PassengerVehicleNumber, U.Name, P.Type, P.Amount, P.Date From LedgerProceeds P INNER JOIN ViewUserList U ON P.UserNo = U.No WHERE P.UserNo=@no";
using (var command = _sqLiteConnection.CreateCommand())
{
command.CommandText = query;
command.Parameters.AddWithValue("@no", no);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var proceedsData = new ProceedsData();
proceedsData.CargoVehicleNumber = reader["CargoVehicleNumber"].ToString();
proceedsData.PassengerVehicleNumber = reader["PassengerVehicleNumber"].ToString();
proceedsData.Name = reader["Name"].ToString();
proceedsData.Amount = int.Parse(reader["Amount"].ToString());
proceedsData.Date = DateTime.Parse(reader["Date"].ToString());
proceedsData.Type = (EProceedsType)int.Parse(reader["Type"].ToString());
proceedsDatas.Add(proceedsData);
}
}
}
return proceedsDatas;
}
public static List<ProceedsData> GetLedgerProceeds(DateTime startDateTime, DateTime endDateTime)
{
var proceedsDatas = new List<ProceedsData>();
@@ -1125,7 +1178,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
{
List<CertificateInformation> certificateInformations = new List<CertificateInformation>();
var query =
$"SELECT U.Name, U.PersonalNumber, U.Address, U.CargoVehicleNumber, C.No, C.IssueDate, C.StartDate, C.EndDate, C.Amount From LedgerCertificate C INNER JOIN ViewUserList U ON C.UserNo = U.No Where C.IssueDate >='{startDateTime.StartDateTime()}' And C.IssueDate <='{endDateTime.EndDateTime()}'";
$"SELECT U.Name, U.PersonalNumber, U.Address, U.CargoVehicleNumber, C.No, C.IssueDate, C.StartDate, C.EndDate, C.Amount, C.PaymentStatus From LedgerCertificate C INNER JOIN ViewUserList U ON C.UserNo = U.No Where C.IssueDate >='{startDateTime.StartDateTime()}' And C.IssueDate <='{endDateTime.EndDateTime()}'";
using (var command = _sqLiteConnection.CreateCommand())
{
@@ -1146,6 +1199,7 @@ namespace HSUCO_Cargo_Garage_Operation_Program
certificateInformation.IssueDate = DateTime.Parse(reader["IssueDate"].ToString());
certificateInformation.StartDate = DateTime.Parse(reader["StartDate"].ToString());
certificateInformation.EndDate = DateTime.Parse(reader["EndDate"].ToString());
certificateInformation.PaymentStatus = (EPaymentStatus)Convert.ToInt32(reader["PaymentStatus"]);
certificateInformations.Add(certificateInformation);
}
}
@@ -1209,16 +1263,17 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static CertificateInformation GetCertificate(string issueNumber)
{
CertificateInformation certificateInformation = new CertificateInformation();
var query = $"SELECT U.Name, U.PersonalNumber, U.Address, U.CargoVehicleNumber, C.Amount, U.Area, C.IssueDate, C.StartDate, C.EndDate From LedgerCertificate C INNER JOIN ViewUserList U ON (C.UserNo = U.No) Where C.No='{issueNumber}'";
var query = $"SELECT C.UserNo, U.Name, U.PersonalNumber, U.Address, U.CargoVehicleNumber, C.Amount, U.Area, C.IssueDate, C.StartDate, C.EndDate, C.PaymentStatus From LedgerCertificate C INNER JOIN ViewUserList U ON (C.UserNo = U.No) Where C.No='{issueNumber}'";
using (var command = _sqLiteConnection.CreateCommand())
{
command.CommandText = query;
using (var reader = command.ExecuteReader())
{ // 이거면 안됨
{
while (reader.Read())
{
certificateInformation.IssueNumber = issueNumber;
certificateInformation.UserNo = reader["UserNo"].ToString();
certificateInformation.Name = reader["Name"].ToString();
certificateInformation.PersonalNumber = reader["PersonalNumber"].ToString();
certificateInformation.Address = reader["Address"].ToString();
@@ -1228,13 +1283,27 @@ namespace HSUCO_Cargo_Garage_Operation_Program
certificateInformation.IssueDate = DateTime.Parse(reader["IssueDate"].ToString());
certificateInformation.StartDate = DateTime.Parse(reader["StartDate"].ToString());
certificateInformation.EndDate = DateTime.Parse(reader["EndDate"].ToString());
certificateInformation.PaymentStatus = (EPaymentStatus)Convert.ToInt32(reader["PaymentStatus"]);
}
}
}
return certificateInformation;
}
public static bool UpdatePaymentCertificate(string no, EPaymentStatus paymentStatus)
{
bool result = false;
var query = "UPDATE LedgerCertificate SET PaymentStatus=@payment WHERE No=@no";
using(var updateCommand = _sqLiteConnection.CreateCommand())
{
updateCommand.CommandText = query;
updateCommand.Parameters.AddWithValue("@payment", Convert.ToInt32(paymentStatus));
updateCommand.Parameters.AddWithValue("@no", no);
var updateResult = updateCommand.ExecuteNonQuery();
result = updateResult > 0;
}
return result;
}
public static int GetLastApplicantLots(int year)
{
return GetLastNo(EGetLastNumber.ApplicantListLots, year);
@@ -1324,11 +1393,20 @@ namespace HSUCO_Cargo_Garage_Operation_Program
public static bool SetCertificate(SetCertificateInformation setCertificateInformation)
{
var query =
$"INSERT INTO LedgerCertificate VALUES('{setCertificateInformation.No}','{setCertificateInformation.UserNo}','{setCertificateInformation.IssueDate.DateTimeDatabase()}','{setCertificateInformation.StartDate.StartDateTime()}','{setCertificateInformation.EndDate.EndDateTime()}',{setCertificateInformation.Amount}) ";
$"INSERT INTO LedgerCertificate(No, UserNo, IssueDate, StartDate, EndDate, Amount, PaymentStatus) VALUES(@no, @userNo, @issueDate, @startDate, @endDate, @amount, @paymentStatus) ";
using (var insertCommand = _sqLiteConnection.CreateCommand())
{
insertCommand.CommandText = query;
insertCommand.Parameters.AddWithValue("@no", setCertificateInformation.No);
insertCommand.Parameters.AddWithValue("@userNo", setCertificateInformation.UserNo);
insertCommand.Parameters.AddWithValue("@issueDate", setCertificateInformation.IssueDate.DateTimeDatabase());
insertCommand.Parameters.AddWithValue("@startDate", setCertificateInformation.StartDate.StartDateTime());
insertCommand.Parameters.AddWithValue("@endDate", setCertificateInformation.EndDate.StartDateTime());
insertCommand.Parameters.AddWithValue("@amount", setCertificateInformation.Amount);
insertCommand.Parameters.AddWithValue("@paymentStatus",Convert.ToInt32(EPaymentStatus.StandBy));
return insertCommand.ExecuteNonQuery() > 0;
}
}

View File

@@ -74,8 +74,8 @@
this.metroTabControl_Main.Dock = System.Windows.Forms.DockStyle.Fill;
this.metroTabControl_Main.Location = new System.Drawing.Point(20, 60);
this.metroTabControl_Main.Name = "metroTabControl_Main";
this.metroTabControl_Main.SelectedIndex = 1;
this.metroTabControl_Main.Size = new System.Drawing.Size(984, 688);
this.metroTabControl_Main.SelectedIndex = 0;
this.metroTabControl_Main.Size = new System.Drawing.Size(1160, 820);
this.metroTabControl_Main.TabIndex = 0;
this.metroTabControl_Main.UseSelectable = true;
//
@@ -85,7 +85,7 @@
this.Main.Controls.Add(this.pictureBox1);
this.Main.Location = new System.Drawing.Point(4, 38);
this.Main.Name = "Main";
this.Main.Size = new System.Drawing.Size(976, 646);
this.Main.Size = new System.Drawing.Size(1152, 778);
this.Main.TabIndex = 2;
this.Main.Text = "메인";
//
@@ -96,7 +96,7 @@
this.pictureBox1.Image = global::HSUCO_Cargo_Garage_Operation_Program.Properties.Resources.CargoMain;
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(976, 646);
this.pictureBox1.Size = new System.Drawing.Size(1152, 778);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
@@ -106,7 +106,7 @@
this.tabPage1.Controls.Add(this.metroTabControl_Applicant);
this.tabPage1.Location = new System.Drawing.Point(4, 38);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Size = new System.Drawing.Size(976, 646);
this.tabPage1.Size = new System.Drawing.Size(1152, 778);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "신청접수";
//
@@ -121,8 +121,8 @@
this.metroTabControl_Applicant.Dock = System.Windows.Forms.DockStyle.Fill;
this.metroTabControl_Applicant.Location = new System.Drawing.Point(0, 0);
this.metroTabControl_Applicant.Name = "metroTabControl_Applicant";
this.metroTabControl_Applicant.SelectedIndex = 3;
this.metroTabControl_Applicant.Size = new System.Drawing.Size(976, 646);
this.metroTabControl_Applicant.SelectedIndex = 0;
this.metroTabControl_Applicant.Size = new System.Drawing.Size(1152, 778);
this.metroTabControl_Applicant.TabIndex = 0;
this.metroTabControl_Applicant.UseSelectable = true;
//
@@ -131,7 +131,7 @@
this.tabPage5.Controls.Add(this.applicant1);
this.tabPage5.Location = new System.Drawing.Point(4, 38);
this.tabPage5.Name = "tabPage5";
this.tabPage5.Size = new System.Drawing.Size(968, 604);
this.tabPage5.Size = new System.Drawing.Size(1144, 736);
this.tabPage5.TabIndex = 0;
this.tabPage5.Text = "신규 접수";
//
@@ -142,7 +142,7 @@
this.applicant1.Location = new System.Drawing.Point(0, 0);
this.applicant1.Margin = new System.Windows.Forms.Padding(0);
this.applicant1.Name = "applicant1";
this.applicant1.Size = new System.Drawing.Size(968, 604);
this.applicant1.Size = new System.Drawing.Size(1144, 736);
this.applicant1.TabIndex = 1;
//
// tabPage6
@@ -150,7 +150,7 @@
this.tabPage6.Controls.Add(this.applicantList1);
this.tabPage6.Location = new System.Drawing.Point(4, 38);
this.tabPage6.Name = "tabPage6";
this.tabPage6.Size = new System.Drawing.Size(968, 604);
this.tabPage6.Size = new System.Drawing.Size(1144, 736);
this.tabPage6.TabIndex = 1;
this.tabPage6.Text = "신청자 리스트";
//
@@ -159,7 +159,7 @@
this.applicantList1.Dock = System.Windows.Forms.DockStyle.Fill;
this.applicantList1.Location = new System.Drawing.Point(0, 0);
this.applicantList1.Name = "applicantList1";
this.applicantList1.Size = new System.Drawing.Size(968, 604);
this.applicantList1.Size = new System.Drawing.Size(1144, 736);
this.applicantList1.TabIndex = 0;
//
// tabPage7
@@ -167,7 +167,7 @@
this.tabPage7.Controls.Add(this.waitingList1);
this.tabPage7.Location = new System.Drawing.Point(4, 38);
this.tabPage7.Name = "tabPage7";
this.tabPage7.Size = new System.Drawing.Size(968, 604);
this.tabPage7.Size = new System.Drawing.Size(1144, 736);
this.tabPage7.TabIndex = 2;
this.tabPage7.Text = "대기자 리스트";
//
@@ -176,7 +176,7 @@
this.waitingList1.Dock = System.Windows.Forms.DockStyle.Fill;
this.waitingList1.Location = new System.Drawing.Point(0, 0);
this.waitingList1.Name = "waitingList1";
this.waitingList1.Size = new System.Drawing.Size(968, 604);
this.waitingList1.Size = new System.Drawing.Size(1144, 736);
this.waitingList1.TabIndex = 0;
//
// tabPage8
@@ -184,7 +184,7 @@
this.tabPage8.Controls.Add(this.userList1);
this.tabPage8.Location = new System.Drawing.Point(4, 38);
this.tabPage8.Name = "tabPage8";
this.tabPage8.Size = new System.Drawing.Size(968, 604);
this.tabPage8.Size = new System.Drawing.Size(1144, 736);
this.tabPage8.TabIndex = 3;
this.tabPage8.Text = "이용자 리스트";
//
@@ -193,7 +193,7 @@
this.userList1.Dock = System.Windows.Forms.DockStyle.Fill;
this.userList1.Location = new System.Drawing.Point(0, 0);
this.userList1.Name = "userList1";
this.userList1.Size = new System.Drawing.Size(968, 604);
this.userList1.Size = new System.Drawing.Size(1144, 736);
this.userList1.TabIndex = 0;
//
// tabPage9
@@ -201,7 +201,7 @@
this.tabPage9.Controls.Add(this.listProceeds);
this.tabPage9.Location = new System.Drawing.Point(4, 38);
this.tabPage9.Name = "tabPage9";
this.tabPage9.Size = new System.Drawing.Size(968, 604);
this.tabPage9.Size = new System.Drawing.Size(1144, 736);
this.tabPage9.TabIndex = 4;
this.tabPage9.Text = "수익금 대장";
//
@@ -211,7 +211,7 @@
this.listProceeds.Dock = System.Windows.Forms.DockStyle.Fill;
this.listProceeds.Location = new System.Drawing.Point(0, 0);
this.listProceeds.Name = "listProceeds";
this.listProceeds.Size = new System.Drawing.Size(968, 604);
this.listProceeds.Size = new System.Drawing.Size(1144, 736);
this.listProceeds.TabIndex = 0;
//
// tabPage10
@@ -219,7 +219,7 @@
this.tabPage10.Controls.Add(this.listCertificate1);
this.tabPage10.Location = new System.Drawing.Point(4, 38);
this.tabPage10.Name = "tabPage10";
this.tabPage10.Size = new System.Drawing.Size(968, 604);
this.tabPage10.Size = new System.Drawing.Size(1144, 736);
this.tabPage10.TabIndex = 5;
this.tabPage10.Text = "증명서발급 대장";
//
@@ -229,7 +229,7 @@
this.listCertificate1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listCertificate1.Location = new System.Drawing.Point(0, 0);
this.listCertificate1.Name = "listCertificate1";
this.listCertificate1.Size = new System.Drawing.Size(968, 604);
this.listCertificate1.Size = new System.Drawing.Size(1144, 736);
this.listCertificate1.TabIndex = 0;
//
// tabPage2
@@ -237,7 +237,7 @@
this.tabPage2.Controls.Add(this.settings1);
this.tabPage2.Location = new System.Drawing.Point(4, 38);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Size = new System.Drawing.Size(976, 646);
this.tabPage2.Size = new System.Drawing.Size(1152, 778);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "설정";
//
@@ -247,7 +247,7 @@
this.settings1.Dock = System.Windows.Forms.DockStyle.Fill;
this.settings1.Location = new System.Drawing.Point(0, 0);
this.settings1.Name = "settings1";
this.settings1.Size = new System.Drawing.Size(976, 646);
this.settings1.Size = new System.Drawing.Size(1152, 778);
this.settings1.TabIndex = 0;
//
// tabPage3
@@ -255,7 +255,7 @@
this.tabPage3.Controls.Add(this.areaSettingControl1);
this.tabPage3.Location = new System.Drawing.Point(4, 38);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Size = new System.Drawing.Size(976, 646);
this.tabPage3.Size = new System.Drawing.Size(1152, 778);
this.tabPage3.TabIndex = 3;
this.tabPage3.Text = "구역설정";
//
@@ -265,19 +265,19 @@
this.areaSettingControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.areaSettingControl1.Location = new System.Drawing.Point(0, 0);
this.areaSettingControl1.Name = "areaSettingControl1";
this.areaSettingControl1.Size = new System.Drawing.Size(976, 646);
this.areaSettingControl1.Size = new System.Drawing.Size(1152, 778);
this.areaSettingControl1.TabIndex = 0;
//
// Master
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1024, 768);
this.ClientSize = new System.Drawing.Size(1200, 900);
this.Controls.Add(this.metroTabControl_Main);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "Master";
this.Style = MetroFramework.MetroColorStyle.Orange;
this.Text = "화성도시공사 화물차고지 운영 프로그램 BETA";
this.Text = "화성도시공사 화물차고지 운영 프로그램";
this.Load += new System.EventHandler(this.Master_Load);
this.metroTabControl_Main.ResumeLayout(false);
this.Main.ResumeLayout(false);

View File

@@ -51,9 +51,9 @@ namespace HSUCO_Cargo_Garage_Operation_Program
e.Graphics.DrawString($"발급번호 : {_certificateInformation[_count].IssueNumber}", new Font("맑은 고딕", 12), Brushes.Black,left + 10, top + 10);
CenterTextWriter($"화물자동차 공영차고지 이용 증명서", new Font("맑은 고딕", 30, FontStyle.Bold), e.Graphics, totalWidth, top + 100);
e.Graphics.DrawString($"■ 성  명 : {_certificateInformation[_count].Name}", new Font("맑은 고딕", 12), Brushes.Black,left + 50, top + 250);
e.Graphics.DrawString($"■ 성\u3000\u3000명 : {_certificateInformation[_count].Name}", new Font("맑은 고딕", 12), Brushes.Black,left + 50, top + 250);
e.Graphics.DrawString($"■ 생년월일 : {_certificateInformation[_count].PersonalNumber}", new Font("맑은 고딕", 12), Brushes.Black,left + 50, top + 300);
e.Graphics.DrawString($"■ 주  소 : {_certificateInformation[_count].Address}", new Font("맑은 고딕", 12), Brushes.Black,left + 50, top + 350);
e.Graphics.DrawString($"■ 주\u3000\u3000소 : {_certificateInformation[_count].Address}", new Font("맑은 고딕", 12), Brushes.Black,left + 50, top + 350);
e.Graphics.DrawString($"■ 차량번호 : {_certificateInformation[_count].CargoVehicleNumber}", new Font("맑은 고딕", 12), Brushes.Black,left + 50, top + 400);
e.Graphics.DrawString($"■ 주차구역 : {_certificateInformation[_count].Area}", new Font("맑은 고딕", 12), Brushes.Black,left + 50, top + 450);
e.Graphics.DrawString($"■ 이용요금 : {string.Format("{0:N0} ", _certificateInformation[_count].Amount)}", new Font("맑은 고딕", 12), Brushes.Black,left + 50, top + 500);