public void Update(WareHouseExportAllocate WareHouseExportAllocate)
        {
            try
            {
                var oldWareHouseExportAllocate = this.Context.WareHouseExportAllocates.FirstOrDefault(x => x.Id == WareHouseExportAllocate.Id);
                if (oldWareHouseExportAllocate == null) return;
                oldWareHouseExportAllocate.Version++;
                this.Context.SaveChanges();
            }
            catch (Exception ex)
            {

                throw;
            }
        }
Esempio n. 2
0
        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)
            {

            }
        }
        public void WarehouseOutputRegister(WareHouseIO wareHouseIO, List<WareHouseIODetail> warehouseIODetails)
        {
            using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
            {
                wareHouseIO.SetInfo(false);
                this.Context.WareHouseIO.Add(wareHouseIO);
                this.Context.SaveChanges();

                var medicineDictionary = new Dictionary<int, int>();
                foreach (var wareHouseIoDetail in warehouseIODetails)
                {
                    wareHouseIoDetail.WareHouseIOId = wareHouseIO.Id;
                    wareHouseIoDetail.SetInfo(false);
                    this.Context.WareHouseIODetail.Add(wareHouseIoDetail);

                    if (medicineDictionary.ContainsKey(wareHouseIoDetail.MedicineId))
                    {
                        medicineDictionary[wareHouseIoDetail.MedicineId] += wareHouseIoDetail.Qty;
                        continue;
                    }
                    medicineDictionary.Add(wareHouseIoDetail.MedicineId, wareHouseIoDetail.Qty);
                }
                this.Context.SaveChanges();

                // var allocatedList = new List<WareHouseExportAllocate>();
                foreach (var item in medicineDictionary.Keys)
                {
                    var warehouse = this.Context.WareHouses.FirstOrDefault(x => x.MedicineId == item && x.ClinicId == AppContext.CurrentClinic.Id);
                    var validWarehouseIODetail = this.Context.VWarehouseDetailFull.Where(x => x.MedicineId == item && x.ClinicId == AppContext.CurrentClinic.Id && (x.Date == null || x.Date <= wareHouseIO.Date) && x.CurrentVolumn > 0).Select(x => x.Id).ToList<int>();
                    var warehouseDetailList = this.Context.WareHouseDetails.Where(x => validWarehouseIODetail.Contains(x.Id)).ToList();
                    var warehouseOutputDetail = warehouseIODetails.Where(x => x.MedicineId == item).ToList();
                    foreach (var outputItem in warehouseOutputDetail)
                    {
                        var qty = outputItem.Qty;
                        foreach(var detail in warehouseDetailList)
                        {
                            if (!detail.LotNo.Equals(outputItem.LotNo)) continue;
                            var allotcateItem = new WareHouseExportAllocate
                                                    {
                                                        WareHouseDetailId = detail.Id,
                                                        WareHouseIODetailId = outputItem.Id,
                                                        Unit = outputItem.Unit,
                                                        Volumn = detail.CurrentVolumn > qty ? qty : detail.CurrentVolumn,
                                                        Version = 0
                                                    };

                            // allocatedList.Add(allotcateItem);
                            this.Context.WareHouseExportAllocates.Add(allotcateItem);
                            qty -= allotcateItem.Volumn;
                            detail.CurrentVolumn -= allotcateItem.Volumn;
                            detail.SetInfo(true);
                            warehouse.Volumn -= allotcateItem.Volumn;
                            warehouse.SetInfo(true);
                            if (qty == 0) break;
                        }

                        if (qty != 0) throw new Exception("Số lượng thuốc đã bị lệch trong lúc thay đổi, hãy chọn lại số lượng cho khớp.");
                    }
                }

                this.Context.SaveChanges();
                scope.Complete();
            }
        }
 public void Insert(WareHouseExportAllocate WareHouseExportAllocate)
 {
     WareHouseExportAllocate.Version = 0;
     this.Context.WareHouseExportAllocates.Add(WareHouseExportAllocate);
     this.Context.SaveChanges();
 }