/// <summary> /// 생성자 오버로딩 /// </summary> /// <param name="salesNo">판매 번호</param> /// <param name="salesDate">판매일</param> /// <param name="realMenuVO">판매물품명</param> /// <param name="totalPrice">총 가격</param> public FrmDetailSaleRecord(int salesNo, DateTime salesDate, RealMenuVO realMenuVO, decimal totalPrice) : this() { this.salesNo = salesNo; this.salesDate = salesDate; this.realMenuVO = realMenuVO; this.totalPrice = totalPrice; }
/// <summary> /// 제조 데이터 그리드뷰 클릭이벤트 제조 완료를 할 수 있다. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dataGridViewING_CellClick(object sender, DataGridViewCellEventArgs e) { RealMenuVO realMenuVO = JsonConvert.DeserializeObject <RealMenuVO>(dataGridViewING.SelectedRows[0].Cells[2].Value.ToString()); tbList.Text = String.Empty; tbList.Text += "========================================\r\n"; foreach (var rmv in realMenuVO.RealMenu) { if (rmv.Menu.Division.Equals(Convert.ToString((int)Division.샌드위치))) { tbList.Text += "\r\n\r\n<<" + Enum.GetName(typeof(Division), int.Parse(rmv.Menu.Division)) + ">>" + rmv.Menu.MenuName; tbList.Text += "\r\n\r\n재료 : ==>"; foreach (var mdl in rmv.MenuDetailList) { tbList.Text += "\t" + mdl.InventoryName + ", "; } } else { tbList.Text += "\r\n\r\n<<" + Enum.GetName(typeof(Division), int.Parse(rmv.Menu.Division)) + ">>\r\n" + rmv.Menu.MenuName; } } var senderGrid = (DataGridView)sender; if (e.RowIndex >= 0) { if (senderGrid.Columns[e.ColumnIndex].Name.Equals("완료")) { if (dataGridViewING.SelectedRows[0].Cells[0].Value.GetType() == typeof(int)) { int num = (int)dataGridViewING.SelectedRows[0].Cells[0].Value; if (MessageBox.Show(num + "번의 제조를 완료 하시겠습니까?", "완료", MessageBoxButtons.OKCancel) == DialogResult.OK) { // 삭제 메서드 작동 try { new MakingDAO().DeleteMaking(num); } catch (Exception) { MessageBox.Show("완료 할 수 없습니다"); } } } else { MessageBox.Show("다시 선택해 주세요"); } GridViewReset(); } } }
private void ListToGridView(List <SaleRecordsVO> saleRecords) { foreach (var item in saleRecords) { salesItemList = string.Empty; RealMenuVO rv = JsonConvert.DeserializeObject <RealMenuVO>(item.SalesitemName); foreach (var realMenu in rv.RealMenu) { salesItemList += realMenu.Menu.MenuName + ", "; } searchRecords.Rows.Add(item.SalesNo, item.SalesDate, salesItemList.Remove(salesItemList.Length - 2, 1), item.SalesPrice, item.Discount, item.Duty, item.SalesTotal, item.PaymentPlan); } salesRecordsGView.DataSource = searchRecords; }
private void salesRecordsGView_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { RealMenuVO realMenuVO = default(RealMenuVO); int salesNo = int.Parse(salesRecordsGView.SelectedRows[0].Cells[0].Value.ToString()); DateTime salesDate = DateTime.Parse(salesRecordsGView.SelectedRows[0].Cells[1].Value.ToString()); var salesItems = from record in searchlist where record.SalesNo == salesNo select new { record.SalesitemName }; foreach (var item in salesItems) { realMenuVO = JsonConvert.DeserializeObject <RealMenuVO>(item.SalesitemName); } decimal totalPrice = decimal.Parse(salesRecordsGView.SelectedRows[0].Cells[6].Value.ToString()); FrmDetailSaleRecord frmDetailSaleRecord = new FrmDetailSaleRecord(salesNo, salesDate, realMenuVO, totalPrice); frmDetailSaleRecord.ShowDialog(); OutputAllSaleRecords(); }
/// <summary> /// 기간별, 그룹별 매출현황을 출력하기 위한 메서드 /// </summary> /// <param name="periodStart">시작 기간</param> /// <param name="periodEnd">종료 기간</param> /// <param name="period">일, 월, 년 그룹 단위 선택</param> public void SelectResourceList(DateTime periodStart, DateTime periodEnd, Period period) { float rawMaterialCost = 0; //그룹별 원재료비 합을 저장할 변수 float investSum = 0; //그룹별 총 매출을 저장할 변수. //일별 총 매출과 원 재료비 계산을 위한 반복문 //var calUnitPrice = from inven in convertInventoryTypetoList // join rcv in receivingDetailList // on inven.InventoryTypeCode equals rcv.InventoryTypeCode // select new // { // InventoryTypeCode = inven.InventoryTypeCode, // UnitPrice = rcv.UnitPrice // }; var calUnitPrice = from inven in convertInventoryTypetoList join rcv in receivingDetailList on inven.InventoryTypeCode equals rcv.InventoryTypeCode group rcv by rcv.InventoryTypeCode into temp select new { InventoryTypeCode = temp.Key, Avg = temp.Average(a => a.UnitPrice) }; //그룹(일별,월별,년별)에따라 총매출, 원재료비, 비품비, 인사비의 총합을 Linq를 사용하여그룹화한 값을 IEnumarable 타입으로 반환. switch (period) { case Period.Date: //일별 총 매출액과 판매물품명을 기간으로 그룹화. var dayPerRealTot = from records in (from saleRecord in saleRecordList where saleRecord.SalesDate >= periodStart && saleRecord.SalesDate <= periodEnd && saleRecord.PaymentPlan != "환불" select new { SalesDate = saleRecord.SalesDate.Date, Stotal = saleRecord.SalesTotal, SitemName = saleRecord.SalesitemName }) group records by records.SalesDate; //일별총 비품비를 기간으로 그룹화. var dayPerEquipPriceTot = from equips in (from equipment in equipmentList where equipment.PurchaseDate >= periodStart && equipment.PurchaseDate <= periodEnd select new { PurchaseDate = equipment.PurchaseDate, PurchasePrice = equipment.PurchasePrice }) group equips by equips.PurchaseDate; //일별 인사급여를 기간으로 그룹화. var dayPerEmployeeSalaryTot = from sals in (from salary in salaryList where salary.Payday >= periodStart && salary.Payday <= periodEnd select new { Payday = salary.Payday, TotalSalary = salary.TotalSalary }) group sals by sals.Payday; foreach (var itemgroup in dayPerRealTot) { rawMaterialCost = 0; //그룹별 원재료비 합을 저장할 변수 investSum = 0; //그룹별 총 매출을 저장할 변수. foreach (var group in itemgroup) { investSum += group.Stotal; #region jsonParsing 분석 //json형식으로된 판매물품명을 매개변수로 받아NuGet 패키지로부터 NewtonSoft의 Json.NET 을 참조받아 Deserializing한다. RealMenuVO rv = JsonConvert.DeserializeObject <RealMenuVO>(group.SitemName); foreach (var realMenu in rv.RealMenu) { //만약 판매메뉴의 구분이 샌드위치라면 if (realMenu.Menu.Division.Equals(Convert.ToString((int)Division.샌드위치))) { //샌드위치의 레시피를 반복하며 재료를 찾아 foreach (var menuDetail in realMenu.MenuDetailList) { //입고내역에 있는 재료단가를 반복시켜서 foreach (var unitPrice in calUnitPrice) { //재료에 해당되는 단가를 일치시킨후 if (menuDetail.InventoryTypeCode.Equals(unitPrice.InventoryTypeCode)) { //원재료비에 단가를 종합한다. //rawMaterialCost += unitPrice.UnitPrice ; rawMaterialCost += unitPrice.Avg; } } } } else { //만약 판매메뉴의 구분이 샌드위치가 아니라면 판매메뉴 고유의 가격을 원재료비에 종합한다. rawMaterialCost += realMenu.Menu.Price * (1 - (40 / 100)); } } #endregion } //종합한 총매출과 원재료비를 리스트에 반환 totInvestList.Add(new ResourceManagementVO() { ResourceDate = itemgroup.Key, RawMaterialCost = rawMaterialCost, TotInvestPrice = investSum }); } //일별 비품비 계산을 위한 반복문 foreach (var item in dayPerEquipPriceTot) { float sum = 0; foreach (var group in item) { sum += group.PurchasePrice; } equipList.Add(new ResourceManagementVO() { ResourceDate = item.Key, EquipPrice = sum }); } //일별 인사급여 계산을 위한 반복문 foreach (var item in dayPerEmployeeSalaryTot) { float sum = 0; foreach (var group in item) { sum += group.TotalSalary; } salList.Add(new ResourceManagementVO() { ResourceDate = item.Key, EmployeePrice = sum }); } FetchMergeList(); break; case Period.Month: var monthPerRealTot = from records in (from saleRecord in saleRecordList where saleRecord.SalesDate.Month >= periodStart.Month && saleRecord.SalesDate.Month <= periodEnd.Month && saleRecord.PaymentPlan != "환불" select new { SalesDate = saleRecord.SalesDate.Month, Stotal = saleRecord.SalesTotal, SitemName = saleRecord.SalesitemName }) group records by records.SalesDate; var monthPerEquipPriceTot = from equips in (from equipment in equipmentList where equipment.PurchaseDate.Month >= periodStart.Month && equipment.PurchaseDate.Month <= periodEnd.Month select new { PurchaseDate = equipment.PurchaseDate.Month, PurchasePrice = equipment.PurchasePrice }) group equips by equips.PurchaseDate; var monthPerEmployeeSalaryTot = from sals in (from salary in salaryList where salary.Payday.Month >= periodStart.Month && salary.Payday.Month <= periodEnd.Month select new { Payday = salary.Payday.Month, TotalSalary = salary.TotalSalary }) group sals by sals.Payday; foreach (var itemgroup in monthPerRealTot) { rawMaterialCost = 0; //그룹별 원재료비 합을 저장할 변수 investSum = 0; //그룹별 총 매출을 저장할 변수. foreach (var group in itemgroup) { investSum += group.Stotal; #region jsonParsing 분석 RealMenuVO rv = JsonConvert.DeserializeObject <RealMenuVO>(group.SitemName); foreach (var realMenu in rv.RealMenu) { if (realMenu.Menu.Division.Equals(Convert.ToString((int)Division.샌드위치))) { foreach (var menuDetail in realMenu.MenuDetailList) { foreach (var unitPrice in calUnitPrice) { if (menuDetail.InventoryTypeCode.Equals(unitPrice.InventoryTypeCode)) { rawMaterialCost += unitPrice.Avg; //rawMaterialCost += unitPrice.UnitPrice; } } } } else { rawMaterialCost += realMenu.Menu.Price * (1 - (40 / 100)); } } #endregion } DateTime dt = default(DateTime); dt = new DateTime(1, itemgroup.Key, 1) + new TimeSpan(00, 00, 00); totInvestList.Add(new ResourceManagementVO() { ResourceDate = dt, RawMaterialCost = rawMaterialCost, TotInvestPrice = investSum }); } foreach (var item in monthPerEquipPriceTot) { float sum = 0; foreach (var group in item) { sum += group.PurchasePrice; } DateTime dt = default(DateTime); dt = new DateTime(1, item.Key, 1) + new TimeSpan(00, 00, 00); equipList.Add(new ResourceManagementVO() { ResourceDate = dt, EquipPrice = sum }); } foreach (var item in monthPerEmployeeSalaryTot) { float sum = 0; foreach (var group in item) { sum += group.TotalSalary; } DateTime dt = default(DateTime); dt = new DateTime(1, item.Key, 1) + new TimeSpan(00, 00, 00); salList.Add(new ResourceManagementVO() { ResourceDate = dt, EmployeePrice = sum }); } FetchMergeList(); break; case Period.Year: var yearPerRealTot = from records in (from saleRecord in saleRecordList where saleRecord.SalesDate.Year >= periodStart.Year && saleRecord.SalesDate.Year <= periodEnd.Year && saleRecord.PaymentPlan != "환불" select new { SalesDate = saleRecord.SalesDate.Year, Stotal = saleRecord.SalesTotal, SitemName = saleRecord.SalesitemName }) group records by records.SalesDate; var yearPerEquipPriceTot = from equips in (from equipment in equipmentList where equipment.PurchaseDate.Year >= periodStart.Year && equipment.PurchaseDate.Year <= periodEnd.Year select new { EquipDate = equipment.PurchaseDate.Year, PurchasePrice = equipment.PurchasePrice }) group equips by equips.EquipDate; var yearPerEmployeeSalaryTot = from sals in (from salary in salaryList where salary.Payday.Year >= periodStart.Year && salary.Payday.Year <= periodEnd.Year select new { Payday = salary.Payday.Year, TotalSalary = salary.TotalSalary }) group sals by sals.Payday; foreach (var itemgroup in yearPerRealTot) { rawMaterialCost = 0; //그룹별 원재료비 합을 저장할 변수 investSum = 0; //그룹별 총 매출을 저장할 변수. foreach (var group in itemgroup) { investSum += group.Stotal; #region jsonParsing 분석 RealMenuVO rv = JsonConvert.DeserializeObject <RealMenuVO>(group.SitemName); foreach (var realMenu in rv.RealMenu) { if (realMenu.Menu.Division.Equals(Convert.ToString((int)Division.샌드위치))) { foreach (var menuDetail in realMenu.MenuDetailList) { foreach (var unitPrice in calUnitPrice) { if (menuDetail.InventoryTypeCode.Equals(unitPrice.InventoryTypeCode)) { // rawMaterialCost += unitPrice.UnitPrice; rawMaterialCost += unitPrice.Avg; } } } } else { rawMaterialCost += realMenu.Menu.Price * (1 - (40 / 100)); } } #endregion } DateTime dt = default(DateTime); dt = new DateTime(itemgroup.Key, 1, 1) + new TimeSpan(00, 00, 00); totInvestList.Add(new ResourceManagementVO() { ResourceDate = dt, RawMaterialCost = rawMaterialCost, TotInvestPrice = investSum }); } foreach (var item in yearPerEquipPriceTot) { float sum = 0; foreach (var group in item) { sum += group.PurchasePrice; } DateTime dt = default(DateTime); dt = new DateTime(item.Key, 1, 1) + new TimeSpan(00, 00, 00); equipList.Add(new ResourceManagementVO() { ResourceDate = dt, EquipPrice = sum }); } foreach (var item in yearPerEmployeeSalaryTot) { float sum = 0; foreach (var group in item) { sum += group.TotalSalary; } DateTime dt = default(DateTime); dt = new DateTime(item.Key, 1, 1) + new TimeSpan(00, 00, 00); salList.Add(new ResourceManagementVO() { ResourceDate = dt, EmployeePrice = sum }); } FetchMergeList(); break; default: break; } }
/// <summary> /// 확인 버튼 클릭시 작동하는 이벤트 메소드 /// 받은 돈과 결제금액을 비교하여 처리 그 외의 여러가지 예외처리 메소드 작동 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOk_Click(object sender, EventArgs e) // 결제 버튼 클릭시 작동 { if (MessageBox.Show("결제하시겠습니까?", "", MessageBoxButtons.OKCancel) == DialogResult.OK) { if (float.Parse(txtTotal.Text) > float.Parse(txtPaid.Text)) { MessageBox.Show("결제 금액이 부족합니다"); } else { if (cbReceipt.Checked) { // 영수중 체크시 출력 기능 구현 MessageBox.Show("영수증 출력"); } string toMaking = String.Empty; RealMenuVO rm = new RealMenuVO(); MenuAndDetails[] bb = new MenuAndDetails[bucketMenuAndDetailList.Count]; int i = 0; foreach (var item in bucketMenuAndDetailList) { bb[i] = item; i++; } rm.RealMenu = bb; toMaking += JsonConvert.SerializeObject(rm, Formatting.Indented); // 판매기록 테이블에 기입할 내용 넘겨줌 SaleRecordsVO saleRecord = new SaleRecordsVO(); saleRecord.SalesDate = DateTime.Now; saleRecord.SalesitemName = toMaking; saleRecord.SalesPrice = float.Parse(txtPrice.Text); saleRecord.Discount = float.Parse(txtSale.Text); saleRecord.Duty = float.Parse(txtTax.Text); saleRecord.SalesTotal = float.Parse(txtTotal.Text); saleRecord.PaymentPlan = "null"; try { new SaleRecordsDAO().InsertSaleRecords(saleRecord); } catch (Exception ee) { MessageBox.Show(ee.StackTrace); } // making 테이블에 넘겨줄때 try { SaleRecordsVO saleRecordsVO = new MakingDAO().SelectSaleRecordNumForMaking(saleRecord.SalesDate, saleRecord.SalesitemName); new MakingDAO().InsertMaking(saleRecordsVO.SalesNo, toMaking); } catch (Exception ee) { MessageBox.Show(ee.StackTrace); } result = true; this.Close(); } } }