public frmImportDetail(int importId)
        {
            repClinic = new ClinicRepository();
            repDefine = new DefineRepository();
            repMedicine = new MedicineRepository();
            repwh = new WareHouseRepository();
            repwhDetail = new WareHouseDetailRepository();
            _repwhIo = new WareHouseIORepository();
            _repwhIoDetail = new WareHouseIODetailRepository();

            InitializeComponent();
            repClinic = new ClinicRepository();
            cbClinic.DataSource = repClinic.GetAll();
            dateImport.Value = DateTime.Now.Date;

            try
            {
                InitGrid();
                LoadData(importId);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        public frmExport()
        {
            repClinic = new ClinicRepository();
            repDefine = new DefineRepository();
            repMedicine = new MedicineRepository();
            repwh = new WareHouseRepository();
            repwhDetail = new WareHouseDetailRepository();
            _repwhIo = new WareHouseIORepository();
            _repwhIoDetail = new WareHouseIODetailRepository();
            // whExport = new WareHouseExportAllocateRepository();
            InitializeComponent();
            repClinic = new ClinicRepository();
            FillToComboboxClinic(0);
            dateImport.Value = DateTime.Now.Date;

            try
            {
                InitGrid();
                //bindingSource3.DataSource = repMedicine.GetAll();
            }
            catch (Exception ex)
            {

                throw;
            }
        }
        private void btnInsert_Click(object sender, EventArgs e)
        {
            try
            {
                //Insert data to WareHousePaper
                WareHouseIO wareHouseIo = new WareHouseIO();
                wareHouseIo.ClinicId = int.Parse(cbClinic.SelectedValue.ToString());
                wareHouseIo.Date = dateImport.Value.Date;
                //wareHouseIo.Deliverer = txtDeliverer.Text;
                //wareHouseIo.Recipient = txtRecipient.Text;
                //wareHouseIo.Type = 1;
                wareHouseIo.Version = 0;
                wareHouseIo.No = txtNo.Text;
                wareHouseIo.Note = txtNote.Text;
                WareHouseIORepository wareHouseIoRepository = new WareHouseIORepository();
                wareHouseIoRepository.Insert(wareHouseIo);

                foreach (DataGridViewRow row in grd.Rows)
                {
                    if (row.Cells["Volumn"].Value != null)
                    {
                        int medicineId = int.Parse(row.Cells["MedicineIdHidden"].Value.ToString());
                        int export = int.Parse(row.Cells["Export"].Value.ToString());
                        //update data to WareHouse
                        var wareHouse = repwh.GetByIdMedicine(medicineId, AppContext.CurrentClinic.Id);
                        if (wareHouse != null)
                        {
                            wareHouse.Volumn -= export;
                            repwh.Update(wareHouse);
                        }

                        var list = repwhDetail.GetMeicineExport(wareHouse.Id, medicineId);

                        foreach (var obj in list)
                        {
                            if (obj.CurrentVolumn >= export)
                            {
                                //Update whDetail
                                obj.CurrentVolumn -= export;
                                repwhDetail.Update(obj);

                                //Insert data to WareHousePaperDetail
                                WareHouseIODetail item = new WareHouseIODetail();
                                //item.WareHousePaperId = wareHouseIo.Id;
                                item.LotNo = obj.LotNo;
                                //item.Type = 1;
                                item.MedicineId = obj.MedicineId;
                                //item.Volumn = export;
                                //item.Unit = obj.Unit;
                                item.UnitPrice = obj.UnitPrice;
                                item.ExpireDate = obj.ExpiredDate;
                                _repwhIoDetail.Insert(item);

                                //Insert whExportAllocate
                                WareHouseExportAllocate wareHouseExportAllocate = new WareHouseExportAllocate();
                                wareHouseExportAllocate.WareHouseDetailId = obj.Id;
                                wareHouseExportAllocate.WareHouseIODetailId = item.Id;
                                wareHouseExportAllocate.Volumn = export;
                                wareHouseExportAllocate.Unit = obj.Unit;
                                // whExport.Insert(wareHouseExportAllocate);
                                break;
                            }
                            else
                            {
                                //Insert data to WareHousePaperDetail
                                WareHouseIODetail item = new WareHouseIODetail();
                                //item.WareHousePaperId = wareHouseIo.Id;
                                item.LotNo = obj.LotNo;
                                //item.Type = 1;
                                item.MedicineId = obj.MedicineId;
                                //item.Volumn = obj.CurrentVolumn;
                                //item.Unit = obj.Unit;
                                item.UnitPrice = obj.UnitPrice;
                                item.ExpireDate = obj.ExpiredDate;
                                _repwhIoDetail.Insert(item);

                                export -= obj.CurrentVolumn;

                                //Update whDetail
                                obj.CurrentVolumn = 0;
                                repwhDetail.Update(obj);

                                //Insert whExportAllocate
                                WareHouseExportAllocate wareHouseExportAllocate = new WareHouseExportAllocate();
                                wareHouseExportAllocate.WareHouseDetailId = obj.Id;
                                wareHouseExportAllocate.WareHouseIODetailId = item.Id;
                                wareHouseExportAllocate.Volumn = obj.CurrentVolumn;
                                wareHouseExportAllocate.Unit = obj.Unit;
                                // whExport.Insert(wareHouseExportAllocate);
                            }
                        }
                    }
                }

                MessageBox.Show("Xuất kho thành công!");
                dateImport.Value = DateTime.Now;
                txtDeliverer.Text = string.Empty;
                txtNo.Text = string.Empty;
                txtNote.Text = string.Empty;
                txtRecipient.Text = string.Empty;
                grd.Rows.Clear();
            }
            catch (Exception ex)
            {

            }
        }
 private void LoadData()
 {
     WareHouseIORepository whIoRepository = new WareHouseIORepository();
     int type = cbTypeWHPage.Text.Equals("Nhập kho", StringComparison.OrdinalIgnoreCase) ? 0 : (cbTypeWHPage.Text.Equals("Xuất kho", StringComparison.OrdinalIgnoreCase) ? 1 : -1);
     //grd.DataSource = whIoRepository.Search("type", dpkFromDate.Value, dpkToDate.Value);
 }
        private void btnInsert_Click(object sender, EventArgs e)
        {
            try
            {
                //Insert data to WareHousePaper
                WareHouseIO wareHouseIo = new WareHouseIO();
                wareHouseIo.ClinicId = int.Parse(cbClinic.SelectedValue.ToString());
                wareHouseIo.Date = dateImport.Value.Date;
                // wareHouseIo.Deliverer = txtDeliverer.Text;
                //wareHouseIo.Recipient = txtRecipient.Text;
                //wareHouseIo.Type = 0;
                wareHouseIo.Version = 0;
                wareHouseIo.No = txtNo.Text;
                wareHouseIo.Note = txtNote.Text;
                WareHouseIORepository wareHouseIoRepository = new WareHouseIORepository();
                wareHouseIoRepository.Insert(wareHouseIo);

                //Insert data to WareHousePaperDetail
                foreach (DataGridViewRow row in grd.Rows)
                {
                    if (ValidateRowData(row))
                    {
                        WareHouseIODetail item = new WareHouseIODetail();
                        //item.WareHousePaperId = wareHouseIo.Id;
                        item.LotNo = row.Cells["LotNo"].Value.ToString();
                        //item.Type = 0;
                        item.MedicineId = int.Parse(row.Cells["MedicineId"].Value.ToString());
                        //item.Volumn = int.Parse(row.Cells["Volumn"].Value.ToString());
                        //item.Unit = int.Parse(row.Cells["Unit"].Value.ToString());
                        item.UnitPrice = int.Parse(row.Cells["UnitPrice"].Value.ToString());
                        item.Amount = int.Parse(row.Cells["Amount"].Value.ToString());
                        item.ExpireDate = DateTime.Parse(row.Cells["ExpireDate"].Value.ToString());
                        if (row.Cells["Note"].Value != null)
                            //item.Note = row.Cells["Note"].Value.ToString();
                        item.CreatedDate = wareHouseIo.CreatedDate;
                        _repwhIoDetail.Insert(item);

                        //Insert data to WareHouse
                        var wareHouse = repwh.GetByIdMedicine(item.MedicineId, wareHouseIo.ClinicId);
                        if (wareHouse != null)
                        {
                            //wareHouse.Volumn += item.Volumn;
                            repwh.Update(wareHouse);
                        }
                        else
                        {
                            wareHouse = new WareHouse();
                            wareHouse.MedicineId = item.MedicineId;
                            wareHouse.ClinicId = wareHouseIo.ClinicId;
                            //wareHouse.Volumn = item.Volumn;
                            wareHouse.MinAllowed = 0;
                            repwh.Insert(wareHouse);
                        }

                        //Insert data to WareHouseDetail
                        WareHouseDetail wareHouseDetail = new WareHouseDetail();
                        wareHouseDetail.MedicineId = item.MedicineId;
                        wareHouseDetail.WareHouseId = wareHouse.Id;
                        wareHouseDetail.WareHouseIODetailId = item.Id;
                        wareHouseDetail.LotNo = item.LotNo;
                        wareHouseDetail.ExpiredDate = item.ExpireDate;
                        //wareHouseDetail.OriginalVolumn = item.Volumn;
                        //wareHouseDetail.CurrentVolumn = item.Volumn;
                        wareHouseDetail.BadVolumn = 0;
                        //wareHouseDetail.Unit = item.Unit;
                        wareHouseDetail.UnitPrice = item.UnitPrice.Value;
                        wareHouseDetail.CreatedDate = DateTime.Now;
                        wareHouseDetail.LastUpdatedDate = DateTime.Now;
                        repwhDetail.Insert(wareHouseDetail);
                    }
                }

                MessageBox.Show("Nhập kho thành công!");
                dateImport.Value = DateTime.Now;
                txtDeliverer.Text = string.Empty;
                txtNo.Text = string.Empty;
                txtNote.Text = string.Empty;
                txtRecipient.Text = string.Empty;
                grd.Rows.Clear();
            }
            catch (Exception ex)
            {

            }
        }