Exemplo n.º 1
0
 /// <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;
 }
Exemplo n.º 2
0
        /// <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();
                }
            }
        }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        /// <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;
            }
        }
Exemplo n.º 6
0
        /// <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();
                }
            }
        }