using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WindowsFormsApp1.Mac;
namespace WindowsFormsApp1.Delivery
{
public partial class List_aggregation : Form
{
Helper_DB db = new Helper_DB();
string db_tmp;
public int EditNumber;
public string compidx;
int row = 0;
Main main;
public List_aggregation(Main _main)
{
InitializeComponent();
main = _main;
compidx = main.com_idx;
}
/////// TODO:
// 새로운 폼 작업 필요.
// "목록집계등록"
private void List_aggregation_Load(object sender, EventArgs e)
{
db.DBcon();
// 작업명 - 배송방법까진 수정이 가능하여야함. 3,4,5,6 + 체크 추가
for (int a = 0; a < 16; a++)
{
if(a==2 || a == 4 || a == 5 || a == 6 || a == 15) {
dataGridView1.Columns[a].ReadOnly = false;
}
else { dataGridView1.Columns[a].ReadOnly = true; }
}
string[] state = { "진행", "완료", "전체" };
combo_state.Items.AddRange(state);
combo_state.SelectedIndex = 0;
string[] years = {"2009", "2010", "2011", "2012", "2013",
"2014", "2015", "2016", "2017", "2018",
"2019", "2020"};
combo_year.Items.AddRange(years);
combo_year.SelectedIndex = 11;
combo_year.Visible = false;
combo_user.Items.Add("전체");
string[] user_tmp = main.DB_User_Data.Split('|');
string cmd = db.self_Made_Cmd("SELECT `name` FROM `User_Data` WHERE `affil` = '" + user_tmp[5] + "';");
string[] user_name = cmd.Split('|');
for(int a = 0; a < user_name.Length; a++)
{
if (a == user_name.Length - 1) { break; }
combo_user.Items.Add(user_name[a]);
}
combo_user.SelectedIndex = 0;
string searchdb = "`list_name`, `date`, `date_res`, `charge`, `work_name`, " +
"`work_way`, `send_way`, `total`, `stock_money`, `vol`, " +
"`stock`, `unstock`, `list_num`, `chk_marc`";
string[] searchdb1 = { "comp_num", "state" };
string[] searchdb2 = { compidx, "진행" };
db_tmp = db.More_DB_Search("Obj_List", searchdb1, searchdb2, searchdb);
Made_Grid(db_tmp);
dataGridView1.Focus();
infor_Update(0);
}
///
/// 표에 값을 채우는 함수.
///
/// 분할을 하지않은 데이터베이스 값
private void Made_Grid(string tmp)
{
dataGridView1.Rows.Clear();
string[] db_data = tmp.Split('|');
string[] grid = {"", "", "", "", "",
"", "", "", "", "",
"", "", "", "", "", "" };
for (int a = 0; a < db_data.Length; a++)
{
if (a % 14 == 0) { grid[0] = db_data[a]; }
if (a % 14 == 1) {
if (db_data[a].Length < 3) {
grid[1] = db_data[a];
}
else { grid[1] = db_data[a].Substring(0, 10); }
grid[1] = db_data[a]; }
if (a % 14 == 2) {
if (db_data[a].Length < 3) {
grid[2] = db_data[a];
}
else { grid[2] = db_data[a].Substring(0, 10); }
}
if (a % 14 == 3) { grid[3] = db_data[a]; }
if (a % 14 == 4) { grid[4] = db_data[a]; }
if (a % 14 == 5) { grid[5] = db_data[a]; }
if (a % 14 == 6) { grid[6] = db_data[a]; }
if (a % 14 == 7) { grid[7] = db_data[a]; }
if (a % 14 == 8) { grid[8] = db_data[a]; }
if (a % 14 == 9) { grid[9] = db_data[a]; }
if (a % 14 == 10) { grid[10] = db_data[a]; }
if (a % 14 == 11) { grid[11] = db_data[a]; }
if (a % 14 == 12) { grid[14] = db_data[a]; }
if (a % 14 == 13) { grid[15] = db_data[a]; dataGridView1.Rows.Add(grid); }
}
GridColorChange();
}
private void btn_lookup_Click(object sender, EventArgs e) // 조회
{
string cmd = "SELECT `list_name`, `date`, `date_res`, `charge`, `work_name`, " +
"`work_way`, `send_way`, `total`, `stock_money`, `vol`, " +
"`stock`, `unstock`, `list_num`, `chk_label` " +
"FROM Obj_List WHERE `comp_num` = '" + main.com_idx + "'";
if(combo_state.Text == "진행") { cmd += " AND `state` = '진행'"; }
if(combo_state.Text == "완료") {
cmd += " AND `state` = '완료'";
// TODO: 연도 적용
}
if(combo_user.Text != "전체") { cmd += " AND `charge` = '" + combo_user.Text + "'"; }
if(tb_clt.Text != "") { cmd += " AND `clt` LIKE'%" + tb_clt.Text + "%'"; }
if(tb_dlv.Text != "") { cmd += " AND `dly` LIKE'%" + tb_dlv.Text + "%'"; }
cmd += ";";
string tmp = db.self_Made_Cmd(cmd);
Made_Grid(tmp);
}
private void btn_save_Click(object sender, EventArgs e) // 저장
{
string table = "Obj_List";
string[] Edit_col = { "work_name", "work_way", "send_way" };
string[] Search_col = { "list_name", "total" };
string edit1, edit2, edit3;
for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
if(dataGridView1.Rows[a].Cells["Column4"].Value.ToString() == null) { edit1 = ""; }
else { edit1 = dataGridView1.Rows[a].Cells["Column4"].Value.ToString(); }
if(dataGridView1.Rows[a].Cells["Column6"].Value.ToString() == null) { edit2 = ""; }
else { edit2 = dataGridView1.Rows[a].Cells["Column6"].Value.ToString(); }
if(dataGridView1.Rows[a].Cells["Column7"].Value.ToString() == null) { edit3 = ""; }
else { edit3 = dataGridView1.Rows[a].Cells["Column7"].Value.ToString(); }
string[] Edit_Data = { edit1, edit2, edit3 };
string[] Search_Data = {dataGridView1.Rows[a].Cells["Column1"].Value.ToString(),
dataGridView1.Rows[a].Cells["Column8"].Value.ToString()};
db.More_Update(table, Edit_col, Edit_Data, Search_col, Search_Data);
}
}
private void btn_process_Click(object sender, EventArgs e) // 완료처리
{
string table = "Obj_List";
string[] Edit_col = { "state" };
string[] Search_col = { "list_name", "total" };
string[] Edit_Data = { "완료" };
int cout = 0;
for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
bool isChecked = Convert.ToBoolean(dataGridView1.Rows[a].Cells["Chk_Column"].Value);
if (isChecked)
{
if (cout == 0) { EditNumber = a; cout++; }
string[] Search_Data = { dataGridView1.Rows[a].Cells["Column1"].Value.ToString(),
dataGridView1.Rows[a].Cells["Column8"].Value.ToString()};
db.More_Update(table, Edit_col, Edit_Data, Search_col, Search_Data);
}
}
if (cout == 0) { MessageBox.Show("체크된 사항이 없습니다."); return; }
else { btn_lookup_Click(null, null); }
}
int cnt = 0; int pageNo = 1;
private void btn_print_Click(object sender, EventArgs e) // 인쇄
{
// TODO: 별도의 인쇄폼이 만들어져야함. (미리보기 구현 수정해야함)
// 08.18 TODO: 인쇄 보류.
//MessageBox.Show("보류");
//return;
printPreviewDialog1.Document = printDocument1;
printDocument1.DefaultPageSettings.Landscape = false;
if (printPreviewDialog1.ShowDialog() == DialogResult.Cancel)
{
cnt = 0;
pageNo = 1;
}
}
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
int dialogWidth = 528; // 페이지 전체넓이 printPreviewDialog.Width
StringFormat sf = new StringFormat(); // 컬럼 안에 있는 값들 가운데 정렬
sf.Alignment = StringAlignment.Center;
int width, width1; // 시작점위치, datagrid 1개의 컬럼 가로길이
int startWidth = 10; // 시작 x좌표
int startHeight = 140; // 시작 y좌표
int avgHeight = dataGridView1.Rows[0].Height; // gridview 컬럼 하나의 높이
int temp = 0;
e.Graphics.DrawString("제목", new Font("Arial", 20, FontStyle.Bold), Brushes.Black, dialogWidth / 2, 40);
e.Graphics.DrawString("인쇄일 : " + DateTime.Now.ToString("yyyy/MM/dd"), new Font("Arial",13), Brushes.Black, dialogWidth-20,80);
e.Graphics.DrawString("페이지번호 : " + pageNo, new Font("Arial",13), Brushes.Black,dialogWidth-20, 100);
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
if (i == 0)
{
width = 0;
width1 = this.dataGridView1.Columns[i].Width + 15;
}
else if (i >= 1 && i < dataGridView1.ColumnCount - 2)
{
width = this.dataGridView1.Columns[i - 1].Width + 15;
width1 = this.dataGridView1.Columns[i].Width + 15;
}
else
{
width = this.dataGridView1.Columns[i - 1].Width + 15;
width1 = this.dataGridView1.Columns[i].Width + 40;
}
RectangleF drawRect = new RectangleF((float)(startWidth + width), (float)startHeight, (float)width1, avgHeight);
e.Graphics.DrawRectangle(Pens.Black, (float)(startWidth + width), (float)startHeight, (float)width1, avgHeight);
e.Graphics.DrawString(dataGridView1.Columns[i].HeaderText, new Font("Arial", 12, FontStyle.Bold), Brushes.Black, drawRect, sf);
startWidth += width;
}
startHeight += avgHeight;
for (int i = cnt; i < dataGridView1.RowCount - 1; i++) {
startWidth = 10;
for(int j = 0; j < dataGridView1.ColumnCount; j++) {
if (j == 0) {
width = 0;
width1 = this.dataGridView1.Columns[j].Width + 15;
}
else if (j >= 1 && j <= dataGridView1.ColumnCount - 2)
{
width = this.dataGridView1.Columns[j - 1].Width + 15;
width1 = this.dataGridView1.Columns[j].Width + 15;
}
else
{
width = this.dataGridView1.Columns[j - 1].Width + 15;
width1 = this.dataGridView1.Columns[j].Width + 40;
}
RectangleF drawRect = new RectangleF((float)(startWidth + width), (float)startHeight, (float)width1, avgHeight);
e.Graphics.DrawRectangle(Pens.Black, (float)(startWidth + width), (float)startHeight, (float)width1, avgHeight);
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[j].FormattedValue.ToString(), new Font("Arial", 9), Brushes.Black, drawRect, sf);
startWidth += width;
}
startHeight += avgHeight;
temp++;
cnt++;
if (temp % 40 == 0)
{
MessageBox.Show("40으로 나눠졌다.");
e.HasMorePages = true;
pageNo++;
return;
}
}
}
private void btn_apply_Click(object sender, EventArgs e)
{
dataGridView1.Rows[row].Cells["Column1"].Value = tb_list_name.Text;
dataGridView1.Rows[row].Cells["Column2"].Value = tb_date.Text;
dataGridView1.Rows[row].Cells["Column5"].Value = tb_date_res.Text;
dataGridView1.Rows[row].Cells["Column3"].Value = tb_charge.Text;
dataGridView1.Rows[row].Cells["Column4"].Value = tb_work_name.Text;
dataGridView1.Rows[row].Cells["Column6"].Value = tb_work_way.Text;
dataGridView1.Rows[row].Cells["Column7"].Value = tb_send_way.Text;
dataGridView1.Rows[row].Cells["Column8"].Value = tb_total.Text;
dataGridView1.Rows[row].Cells["Column9"].Value = tb_stock.Text;
dataGridView1.Rows[row].Cells["Column10"].Value = tb_count.Text;
dataGridView1.Rows[row].Cells["Column13"].Value = tb_stock_per.Text;
dataGridView1.Rows[row].Cells["Column11"].Value = lbl_stock_count.Text;
dataGridView1.Rows[row].Cells["Column12"].Value = lbl_unstock_count.Text;
dataGridView1.Rows[row].Cells["Column20"].Value = tb_list_num.Text;
}
private void btn_checkup_Click(object sender, EventArgs e) // 검수작업 (내부 작업필요)
{
int cout = 0;
for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
bool isChecked = Convert.ToBoolean(dataGridView1.Rows[a].Cells["Chk_Column"].Value);
if (isChecked)
{
if (cout == 0) { EditNumber = a; cout++; }
else if (cout != 0) { MessageBox.Show("체크가 2개이상 되어있습니다!"); cout++; break; }
}
}
if (cout == 0) { MessageBox.Show("체크된 사항이 없습니다."); return; }
if (cout == 1)
{
List_Chk_Work chk_work = new List_Chk_Work(this);
chk_work.TopMost = true;
chk_work.data[0] = dataGridView1.Rows[EditNumber].Cells["Column1"].Value.ToString();
chk_work.data[1] = compidx;
chk_work.Show();
}
}
private void btn_ISBN_Click(object sender, EventArgs e) // ISBN조회
{
Check_ISBN isbn = new Check_ISBN(this);
isbn.list_name = tb_list_name.Text;
isbn.Show();
}
private void btn_date_Click(object sender, EventArgs e) // 일정
{
// TODO: 별도의 일정폼이 만들어져야함.
}
//////////////////////////////////////////////////////////////////////////////////////
private void combo_state_SelectedIndexChanged(object sender, EventArgs e)
{
if(combo_state.Text == "진행")
{
combo_year.Visible = false;
}
else if(combo_state.Text == "완료")
{
combo_year.Visible = true;
}
}
///
/// 데이터그리드뷰 색상변경
///
public void GridColorChange()
{
for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
dataGridView1.Rows[a].DefaultCellStyle.BackColor = Color.Empty;
}
for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
if (dataGridView1.Rows[a].Cells["chk_label"].Value.ToString() == "라벨")
{
dataGridView1.Rows[a].DefaultCellStyle.BackColor = Color.Yellow;
}
}
}
private void btn_close_Click(object sender, EventArgs e)
{
this.Close();
}
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
Skill_Grid skill = new Skill_Grid();
if(e.KeyCode == Keys.Delete)
{
skill.DataGrid_to_Delete(sender, e);
}
// gird 선택시 우측란에 해당 정보로 초기화 및 최신화
if(e.KeyCode == Keys.Up)
{
if (row > 0) { row -= 1; }
infor_Update(row);
}
if (e.KeyCode == Keys.Down)
{
if (row < dataGridView1.Rows.Count-1) { row += 1; }
infor_Update(row);
}
}
private void infor_reset()
{
tb_list_name.Text = "";
tb_date.Text = "";
tb_date_res.Text = "";
tb_charge.Text = "";
tb_work_name.Text = "";
tb_work_way.Text = "";
tb_send_way.Text = "";
tb_total.Text = "";
tb_stock.Text = "";
tb_count.Text = "";
tb_stock_per.Text = "";
lbl_stock_count.Text = "";
lbl_unstock_count.Text = "";
tb_list_num.Text = "";
}
private void infor_Update(int rowidx)
{
if (rowidx < 0) { return; }
row = rowidx;
infor_reset();
// 목록명
tb_list_name.Text = dataGridView1.Rows[rowidx].Cells["Column1"].Value.ToString();
// 목록일자
tb_date.Text = dataGridView1.Rows[rowidx].Cells["Column2"].Value.ToString().Substring(0,10);
// 완료일자
if (dataGridView1.Rows[rowidx].Cells["Column5"].Value.ToString().Length < 3) {
tb_date_res.Text = "";
}
else {
tb_date_res.Text = dataGridView1.Rows[rowidx].Cells["Column5"].Value.ToString().Substring(0, 10);
}
// 담당자
tb_charge.Text = dataGridView1.Rows[rowidx].Cells["Column3"].Value.ToString();
// 작업명
tb_work_name.Text = dataGridView1.Rows[rowidx].Cells["Column4"].Value.ToString();
// 작업방법
tb_work_way.Text = dataGridView1.Rows[rowidx].Cells["Column6"].Value.ToString();
// 배송방법
tb_send_way.Text = dataGridView1.Rows[rowidx].Cells["Column7"].Value.ToString();
// 합계금액
tb_total.Text = dataGridView1.Rows[rowidx].Cells["Column8"].Value.ToString();
// 입고금액
tb_stock.Text = dataGridView1.Rows[rowidx].Cells["Column9"].Value.ToString();
// 수량
tb_count.Text = dataGridView1.Rows[rowidx].Cells["Column10"].Value.ToString();
// 입고율
tb_stock_per.Text = dataGridView1.Rows[rowidx].Cells["Column13"].Value.ToString();
// 입고 / 미입고
lbl_stock_count.Text = dataGridView1.Rows[rowidx].Cells["Column11"].Value.ToString();
lbl_unstock_count.Text = dataGridView1.Rows[rowidx].Cells["Column12"].Value.ToString();
// 목록번호
tb_list_num.Text = dataGridView1.Rows[rowidx].Cells["Column20"].Value.ToString();
// 택배여부
if(dataGridView1.Rows[rowidx].Cells["Column18"].Value.ToString() == "") {
lbl_send_n.Font = new Font(this.Font, FontStyle.Bold);
lbl_send_y.Font = new Font(this.Font, FontStyle.Regular);
}
else { lbl_send_y.Font = new Font(this.Font, FontStyle.Bold);
lbl_send_n.Font = new Font(this.Font, FontStyle.Regular);
}
// 라벨여부
if (dataGridView1.Rows[rowidx].Cells["chk_label"].Value.ToString() == "라벨") {
lbl_l_y.Font = new Font(this.Font, FontStyle.Bold);
lbl_l_n.Font = new Font(this.Font, FontStyle.Regular);
}
else { lbl_l_n.Font = new Font(this.Font, FontStyle.Bold);
lbl_l_y.Font = new Font(this.Font, FontStyle.Regular);
}
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex != 2 || e.ColumnIndex != 4 || e.ColumnIndex != 5 ||
e.ColumnIndex != 6 || e.ColumnIndex != 15)
{
List_Lookup list_l = new List_Lookup(this);
list_l.call_base = dataGridView1.Rows[e.RowIndex].Cells["Column1"].Value.ToString();
list_l.MdiParent = main;
list_l.WindowState = FormWindowState.Maximized;
list_l.Show();
}
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
row = e.RowIndex;
infor_Update(e.RowIndex);
}
private void lbl_l_y_Click(object sender, EventArgs e)
{
if(((Label)sender).Name == "lbl_l_y") {
lbl_l_y.Font = new Font(this.Font, FontStyle.Bold);
lbl_l_n.Font = new Font(this.Font, FontStyle.Regular);
}
if(((Label)sender).Name == "lbl_l_n") {
lbl_l_y.Font = new Font(this.Font, FontStyle.Regular);
lbl_l_n.Font = new Font(this.Font, FontStyle.Bold);
}
if(((Label)sender).Name == "lbl_send_y")
{
lbl_send_y.Font = new Font(this.Font, FontStyle.Bold);
lbl_send_n.Font = new Font(this.Font, FontStyle.Regular);
}
if (((Label)sender).Name == "lbl_send_n")
{
lbl_send_y.Font = new Font(this.Font, FontStyle.Regular);
lbl_send_n.Font = new Font(this.Font, FontStyle.Bold);
}
}
}
}