Ejemplo n.º 1
0
        private void fastPendingList_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            try
            {
                FastObjectListView fastPendingList = this.customTabBatch.SelectedIndex == 0 ? this.fastPendingPallets : (this.customTabBatch.SelectedIndex == 1 ? this.fastPendingCartons : null);

                if (this.warehouseAdjustmentViewModel.WarehouseAdjustmentTypeID == (int)GlobalEnums.WarehouseAdjustmentTypeID.ChangeBinLocation && fastPendingList.SelectedObject != null)
                {
                    if (fastPendingList != null && fastPendingList.SelectedObject != null)
                    {
                        GoodsReceiptDetailAvailable goodsReceiptDetailAvailable = (GoodsReceiptDetailAvailable)fastPendingList.SelectedObject;
                        if (goodsReceiptDetailAvailable != null)
                        {
                            LineDetailBinlLocation lineDetailBinlLocation = new LineDetailBinlLocation()
                            {
                                CommodityID     = goodsReceiptDetailAvailable.CommodityID,
                                CommodityCode   = goodsReceiptDetailAvailable.CommodityCode,
                                CommodityName   = goodsReceiptDetailAvailable.CommodityName,
                                PackID          = goodsReceiptDetailAvailable.PackID,
                                PackCode        = goodsReceiptDetailAvailable.PalletCode,
                                CartonID        = goodsReceiptDetailAvailable.CartonID,
                                CartonCode      = goodsReceiptDetailAvailable.CartonCode,
                                PalletID        = goodsReceiptDetailAvailable.PalletID,
                                PalletCode      = goodsReceiptDetailAvailable.PalletCode,
                                WarehouseID     = (int)this.warehouseAdjustmentViewModel.WarehouseReceiptID,
                                BinLocationID   = goodsReceiptDetailAvailable.NewBinLocationID,
                                BinLocationCode = goodsReceiptDetailAvailable.NewBinLocationCode,
                                Quantity        = (decimal)goodsReceiptDetailAvailable.QuantityAvailable,
                                LineVolume      = (decimal)goodsReceiptDetailAvailable.LineVolumeAvailable
                            };

                            Pickups.WizardDetail wizardDetail = new Pickups.WizardDetail(lineDetailBinlLocation);
                            TabletMDI            tabletMDI    = new TabletMDI(wizardDetail);

                            if (tabletMDI.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                foreach (var checkedObject in fastPendingList.CheckedObjects)
                                {
                                    GoodsReceiptDetailAvailable p = (GoodsReceiptDetailAvailable)checkedObject;
                                    p.NewBinLocationID   = (int)lineDetailBinlLocation.BinLocationID;
                                    p.NewBinLocationCode = lineDetailBinlLocation.BinLocationCode;
                                }
                                fastPendingList.RefreshObject(goodsReceiptDetailAvailable);
                            }

                            wizardDetail.Dispose(); tabletMDI.Dispose();
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                ExceptionHandlers.ShowExceptionMessageBox(this, exception);
            }
        }
Ejemplo n.º 2
0
        private void buttonAddESC_Click(object sender, EventArgs e)
        {
            try
            {
                if (sender.Equals(this.buttonAdd) || sender.Equals(this.buttonAddExit))
                {
                    if (this.fastPendingPallets.CheckedObjects.Count > 0 && this.availableCartons.Count > 0)
                    {
                        if (this.availableCartons.Where(w => w.BinLocationID == null || w.BinLocationID <= 0).FirstOrDefault() != null)
                        {
                            throw new Exception("Vui lòng chọn Bin Location cho carton.");
                        }

                        this.warehouseAdjustmentViewModel.ViewDetails.RaiseListChangedEvents = false;
                        foreach (var checkedObjects in this.fastPendingPallets.CheckedObjects)
                        {
                            GoodsReceiptDetailAvailable  goodsReceiptDetailAvailable  = (GoodsReceiptDetailAvailable)checkedObjects;
                            WarehouseAdjustmentDetailDTO warehouseAdjustmentDetailDTO = this.newWarehouseAdjustmentDetailDTO(goodsReceiptDetailAvailable.CommodityID, goodsReceiptDetailAvailable.CommodityCode, goodsReceiptDetailAvailable.CommodityName, goodsReceiptDetailAvailable.PackageSize, goodsReceiptDetailAvailable.Volume, goodsReceiptDetailAvailable.PackageVolume, goodsReceiptDetailAvailable.GoodsReceiptID, goodsReceiptDetailAvailable.GoodsReceiptDetailID, goodsReceiptDetailAvailable.GoodsReceiptReference, goodsReceiptDetailAvailable.GoodsReceiptEntryDate, goodsReceiptDetailAvailable.BatchID, goodsReceiptDetailAvailable.BatchEntryDate, goodsReceiptDetailAvailable.BinLocationID, goodsReceiptDetailAvailable.BinLocationCode, goodsReceiptDetailAvailable.WarehouseID, goodsReceiptDetailAvailable.WarehouseCode, goodsReceiptDetailAvailable.PackID, goodsReceiptDetailAvailable.PackCode, goodsReceiptDetailAvailable.CartonID, goodsReceiptDetailAvailable.CartonCode, goodsReceiptDetailAvailable.PalletID, goodsReceiptDetailAvailable.PalletCode, goodsReceiptDetailAvailable.PackCounts, goodsReceiptDetailAvailable.CartonCounts, goodsReceiptDetailAvailable.PalletCounts, (decimal)goodsReceiptDetailAvailable.QuantityAvailable, (decimal)goodsReceiptDetailAvailable.LineVolumeAvailable, -(decimal)goodsReceiptDetailAvailable.QuantityAvailable, -(decimal)goodsReceiptDetailAvailable.LineVolumeAvailable);
                            this.warehouseAdjustmentViewModel.ViewDetails.Add(warehouseAdjustmentDetailDTO);

                            foreach (Carton carton in this.availableCartons.Where(w => w.PalletID == goodsReceiptDetailAvailable.PalletID))
                            {
                                warehouseAdjustmentDetailDTO = this.newWarehouseAdjustmentDetailDTO(goodsReceiptDetailAvailable.CommodityID, goodsReceiptDetailAvailable.CommodityCode, goodsReceiptDetailAvailable.CommodityName, goodsReceiptDetailAvailable.PackageSize, goodsReceiptDetailAvailable.Volume, goodsReceiptDetailAvailable.PackageVolume, null, null, null, null, goodsReceiptDetailAvailable.BatchID, goodsReceiptDetailAvailable.BatchEntryDate, (int)carton.BinLocationID, carton.BinLocationCode, goodsReceiptDetailAvailable.WarehouseID, goodsReceiptDetailAvailable.WarehouseCode, null, null, carton.CartonID, carton.Code, null, null, carton.PackCounts, 1, 0, 0, 0, 1, carton.LineVolume);
                                this.warehouseAdjustmentViewModel.ViewDetails.Add(warehouseAdjustmentDetailDTO);
                            }
                        }
                        this.warehouseAdjustmentViewModel.ViewDetails.RaiseListChangedEvents = true;
                        this.warehouseAdjustmentViewModel.ViewDetails.ResetBindings();
                    }

                    if (sender.Equals(this.buttonAddExit))
                    {
                        this.DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        this.WizardDetail_Load(this, new EventArgs());
                    }
                }

                if (sender.Equals(this.buttonESC))
                {
                    this.DialogResult = DialogResult.Cancel;
                }
            }
            catch (Exception exception)
            {
                ExceptionHandlers.ShowExceptionMessageBox(this, exception);
            }
        }
Ejemplo n.º 3
0
 private void fastAvailableGoodsReceiptDetails_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (this.fileName == null)
     {//WHEN IMPORT: DEFUALT IS MULTIPLE SELECTED
         FastObjectListView fastAvailableGoodsReceiptDetails = (FastObjectListView)sender;
         if (fastAvailableGoodsReceiptDetails != null && fastAvailableGoodsReceiptDetails.SelectedObject != null)
         {//CLEAR ALL CHECKED OBJECTS => THEN CHECK THE CURRENT SELECTED ROW
             GoodsReceiptDetailAvailable goodsReceiptDetailAvailable = (GoodsReceiptDetailAvailable)fastAvailableGoodsReceiptDetails.SelectedObject;
             if (goodsReceiptDetailAvailable != null)
             {
                 fastAvailableGoodsReceiptDetails.CheckedObjects = null; fastAvailableGoodsReceiptDetails.CheckObject(goodsReceiptDetailAvailable);
             }
         }
     }
 }
Ejemplo n.º 4
0
        private void fastPendingPallets_ItemChecked(object sender, ItemCheckedEventArgs e)
        {
            OLVListItem olvListItem = this.fastPendingPallets.Items[e.Item.Index] as OLVListItem;
            GoodsReceiptDetailAvailable goodsReceiptDetailAvailable = olvListItem.RowObject as GoodsReceiptDetailAvailable;

            if (olvListItem.Checked)
            {
                IList <Carton> cartons = this.cartonAPIs.GetCartons(GlobalVariables.FillingLine.None, null, goodsReceiptDetailAvailable.PalletID);
                cartons.Each(c => { c.BinLocationID = goodsReceiptDetailAvailable.BinLocationID; c.BinLocationCode = goodsReceiptDetailAvailable.BinLocationCode; });
                this.availableCartons.AddRange(cartons);
                this.fastPendingCartons.SetObjects(this.availableCartons);
            }
            else
            {
                this.availableCartons.RemoveAll(x => x.PalletID == goodsReceiptDetailAvailable.PalletID);
            }

            this.fastPendingCartons.SetObjects(this.availableCartons);
        }
Ejemplo n.º 5
0
        private void buttonAddESC_Click(object sender, EventArgs e)
        {
            try
            {
                if (sender.Equals(this.buttonAddExit))
                {
                    FastObjectListView fastAvailableGoodsReceiptDetails = this.customTabBatch.SelectedIndex == 0 ? this.fastAvailablePallets : (this.customTabBatch.SelectedIndex == 1 ? this.fastAvailableCartons : this.customTabBatch.SelectedIndex == 2 ? this.fastAvailablePacks : null);

                    if (fastAvailableGoodsReceiptDetails != null)
                    {
                        if (fastAvailableGoodsReceiptDetails.CheckedObjects.Count > 0)
                        {
                            this.goodsIssueViewModel.ViewDetails.RaiseListChangedEvents = false;
                            foreach (var checkedObjects in fastAvailableGoodsReceiptDetails.CheckedObjects)
                            {
                                GoodsReceiptDetailAvailable goodsReceiptDetailAvailable = (GoodsReceiptDetailAvailable)checkedObjects;
                                GoodsIssueDetailDTO         goodsIssueDetailDTO         = new GoodsIssueDetailDTO()
                                {
                                    GoodsIssueID = this.goodsIssueViewModel.GoodsIssueID,

                                    DeliveryAdviceID        = goodsReceiptDetailAvailable.DeliveryAdviceID > 0 ? goodsReceiptDetailAvailable.DeliveryAdviceID : (int?)null,
                                    DeliveryAdviceDetailID  = goodsReceiptDetailAvailable.DeliveryAdviceDetailID > 0 ? goodsReceiptDetailAvailable.DeliveryAdviceDetailID : (int?)null,
                                    DeliveryAdviceReference = goodsReceiptDetailAvailable.PrimaryReference,
                                    DeliveryAdviceEntryDate = goodsReceiptDetailAvailable.PrimaryEntryDate,

                                    TransferOrderID        = goodsReceiptDetailAvailable.TransferOrderID > 0 ? goodsReceiptDetailAvailable.TransferOrderID : (int?)null,
                                    TransferOrderDetailID  = goodsReceiptDetailAvailable.TransferOrderDetailID > 0 ? goodsReceiptDetailAvailable.TransferOrderDetailID : (int?)null,
                                    TransferOrderReference = goodsReceiptDetailAvailable.PrimaryReference,
                                    TransferOrderEntryDate = goodsReceiptDetailAvailable.PrimaryEntryDate,

                                    CommodityID   = goodsReceiptDetailAvailable.CommodityID,
                                    CommodityCode = goodsReceiptDetailAvailable.CommodityCode,
                                    CommodityName = goodsReceiptDetailAvailable.CommodityName,

                                    PackageSize = goodsReceiptDetailAvailable.PackageSize,

                                    Volume        = goodsReceiptDetailAvailable.Volume,
                                    PackageVolume = goodsReceiptDetailAvailable.PackageVolume,

                                    GoodsReceiptID       = goodsReceiptDetailAvailable.GoodsReceiptID,
                                    GoodsReceiptDetailID = goodsReceiptDetailAvailable.GoodsReceiptDetailID,

                                    GoodsReceiptReference = goodsReceiptDetailAvailable.GoodsReceiptReference,
                                    GoodsReceiptEntryDate = goodsReceiptDetailAvailable.GoodsReceiptEntryDate,

                                    BatchID        = goodsReceiptDetailAvailable.BatchID,
                                    BatchEntryDate = goodsReceiptDetailAvailable.BatchEntryDate,

                                    BinLocationID   = goodsReceiptDetailAvailable.BinLocationID,
                                    BinLocationCode = goodsReceiptDetailAvailable.BinLocationCode,

                                    WarehouseID   = goodsReceiptDetailAvailable.WarehouseID,
                                    WarehouseCode = goodsReceiptDetailAvailable.WarehouseCode,

                                    PackID     = goodsReceiptDetailAvailable.PackID,
                                    PackCode   = goodsReceiptDetailAvailable.PackCode,
                                    CartonID   = goodsReceiptDetailAvailable.CartonID,
                                    CartonCode = goodsReceiptDetailAvailable.CartonCode,
                                    PalletID   = goodsReceiptDetailAvailable.PalletID,
                                    PalletCode = goodsReceiptDetailAvailable.PalletCode,

                                    PackCounts   = goodsReceiptDetailAvailable.PackCounts,
                                    CartonCounts = goodsReceiptDetailAvailable.CartonCounts,
                                    PalletCounts = goodsReceiptDetailAvailable.PalletCounts,

                                    QuantityAvailable   = (decimal)goodsReceiptDetailAvailable.QuantityAvailable,
                                    LineVolumeAvailable = (decimal)goodsReceiptDetailAvailable.LineVolumeAvailable,

                                    QuantityRemains   = goodsReceiptDetailAvailable.QuantityRemains,
                                    LineVolumeRemains = goodsReceiptDetailAvailable.LineVolumeRemains,

                                    Quantity   = (decimal)goodsReceiptDetailAvailable.QuantityAvailable,  //SHOULD: Quantity = QuantityAvailable (ALSO: LineVolume = LineVolumeAvailable): BECAUSE: WE ISSUE BY WHOLE UNIT OF PALLET/ OR CARTON/ OR PACK
                                    LineVolume = (decimal)goodsReceiptDetailAvailable.LineVolumeAvailable //IF Quantity > QuantityRemains (OR LineVolume > LineVolumeRemains) => THE GoodsIssueDetailDTO WILL BREAK THE ValidationRule => CAN NOT SAVE => USER MUST SELECT OTHER APPROPRIATE UNIT OF PALLET/ OR CARTON/ OR PACK WHICH MATCH THE Quantity/ LineVolume
                                };
                                this.goodsIssueViewModel.ViewDetails.Insert(0, goodsIssueDetailDTO);
                            }
                        }
                    }

                    if (this.MdiParent != null)
                    {
                        this.MdiParent.DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        this.DialogResult = DialogResult.OK;
                    }
                }

                if (sender.Equals(this.buttonESC))
                {
                    if (this.MdiParent != null)
                    {
                        this.MdiParent.DialogResult = DialogResult.Cancel;
                    }
                    else
                    {
                        this.DialogResult = DialogResult.Cancel;
                    }
                }
            }
            catch (Exception exception)
            {
                ExceptionHandlers.ShowExceptionMessageBox(this, exception);
            }
            finally
            {
                if (!this.goodsIssueViewModel.ViewDetails.RaiseListChangedEvents)
                {
                    this.goodsIssueViewModel.ViewDetails.RaiseListChangedEvents = true;
                    this.goodsIssueViewModel.ViewDetails.ResetBindings();
                }
            }
        }
Ejemplo n.º 6
0
        private void WizardDetail_Load(object sender, EventArgs e)
        {
            try
            {
                string commodityIDs = "";
                Dictionary <int, int> filterBatchPerCommodity = new Dictionary <int, int>();  //Dictionary with pair: [CommodityID, BatchID]

                if (this.fileName != null)
                {
                    foreach (IPendingPrimaryDetail ipendingPrimaryDetail in this.pendingPrimaryDetails)
                    {
                        if (commodityIDs.IndexOf(ipendingPrimaryDetail.CommodityID.ToString()) < 0)
                        {
                            commodityIDs = commodityIDs + (commodityIDs != "" ? "," : "") + ipendingPrimaryDetail.CommodityID.ToString();
                        }

                        if (ipendingPrimaryDetail.BatchID != null)
                        {
                            filterBatchPerCommodity[ipendingPrimaryDetail.CommodityID] = (int)ipendingPrimaryDetail.BatchID;
                        }
                    }
                }

                GoodsReceiptAPIs goodsReceiptAPIs = new GoodsReceiptAPIs(CommonNinject.Kernel.Get <IGoodsReceiptAPIRepository>());

                List <GoodsReceiptDetailAvailable>        goodsReceiptDetailAvailables = goodsReceiptAPIs.GetGoodsReceiptDetailAvailables(this.goodsIssueViewModel.LocationID, this.goodsIssueViewModel.WarehouseID, this.fileName == null ? this.pendingPrimaryDetail.CommodityID : (int?)null, this.fileName == null ? null : commodityIDs, this.fileName == null ? this.pendingPrimaryDetail.BatchID : (int?)null, string.Join(",", this.goodsIssueViewModel.ViewDetails.Select(d => d.GoodsReceiptDetailID)), true);
                IEnumerable <GoodsReceiptDetailAvailable> goodsReceiptPalletAvailables = null;
                IEnumerable <GoodsReceiptDetailAvailable> goodsReceiptCartonAvailables = null;
                IEnumerable <GoodsReceiptDetailAvailable> goodsReceiptPackAvailables   = null;

                List <MismatchedBarcode> mismatchedBarcodes = new List <MismatchedBarcode>();

                if (this.fileName == null)
                {
                    goodsReceiptDetailAvailables.Each(goodsReceiptDetailAvailable =>
                    {
                        goodsReceiptDetailAvailable.DeliveryAdviceID       = this.pendingPrimaryDetail.DeliveryAdviceID;
                        goodsReceiptDetailAvailable.DeliveryAdviceDetailID = this.pendingPrimaryDetail.DeliveryAdviceDetailID;

                        goodsReceiptDetailAvailable.TransferOrderID       = this.pendingPrimaryDetail.TransferOrderID;
                        goodsReceiptDetailAvailable.TransferOrderDetailID = this.pendingPrimaryDetail.TransferOrderDetailID;

                        goodsReceiptDetailAvailable.PrimaryReference = this.pendingPrimaryDetail.PrimaryReference;
                        goodsReceiptDetailAvailable.PrimaryEntryDate = this.pendingPrimaryDetail.PrimaryEntryDate;

                        goodsReceiptDetailAvailable.QuantityRemains   = (decimal)this.pendingPrimaryDetail.QuantityRemains;
                        goodsReceiptDetailAvailable.LineVolumeRemains = (decimal)this.pendingPrimaryDetail.LineVolumeRemains;
                    });

                    goodsReceiptPalletAvailables = goodsReceiptDetailAvailables.Where(w => w.PalletID != null);
                    goodsReceiptCartonAvailables = goodsReceiptDetailAvailables.Where(w => w.CartonID != null);
                    if (this.UsingPack)
                    {
                        goodsReceiptPackAvailables = goodsReceiptDetailAvailables.Where(w => w.PackID != null);
                    }
                }
                else
                {
                    string[] barcodes = System.IO.File.ReadAllLines(fileName);
                    if (barcodes.Count() > 0)
                    {
                        if (filterBatchPerCommodity.Count > 0) //Remove row that does not match pair: [CommodityID, BatchID]
                        {
                            foreach (KeyValuePair <int, int> change in filterBatchPerCommodity)
                            { //LƯU Ý: CÂU LỆNH SAU ĐÂY SẼ REMOVE TẤT CẢ CommodityID NOT MATCH WITH BatchID => DO ĐÓ: NẾU 1 D.A/ T.O: VỪA CÓ CHỈ ĐỊNH BATCH, VỪA KHÔNG CHỈ ĐỊNH BATCH => THÌ PHẢI IMPORT BATCH TRƯỚC, SAU ĐÓ IMPORT NON-BATCH SAU (HOẶC ĐƠN GIẢN HƠN LÀ TÁCH THÀNH 2 GOODSISSUE)
                                goodsReceiptDetailAvailables.RemoveAll(w => w.CommodityID == change.Key && w.BatchID != change.Value);
                            }
                        }

                        foreach (string barcode in barcodes)
                        {
                            GoodsReceiptDetailAvailable goodsReceiptDetailAvailable = goodsReceiptDetailAvailables.Find(w => (w.PalletCode == barcode || w.CartonCode == barcode || w.PackCode == barcode));
                            if (goodsReceiptDetailAvailable != null)
                            {
                                if (goodsReceiptDetailAvailable.IsSelected == false)
                                {
                                    IPendingPrimaryDetail pendingPrimaryDetail = this.pendingPrimaryDetails.ToList().Find(w => w.CommodityID == goodsReceiptDetailAvailable.CommodityID && (w.BatchID == null || w.BatchID == goodsReceiptDetailAvailable.BatchID) && (w.QuantityRemains - w.QuantityIssue) >= goodsReceiptDetailAvailable.QuantityAvailable && (w.LineVolumeRemains - w.LineVolumeIssue) >= goodsReceiptDetailAvailable.LineVolumeAvailable);
                                    if (pendingPrimaryDetail != null)
                                    {
                                        //WHEN THIS FORM IS LOADED, pendingPrimaryDetail.QuantityIssue AND pendingPrimaryDetail.LineVolumeIssue IS ALWAYS = 0. THESE PROPERTIES (QuantityIssue, LineVolumeIssue) ARE USED TO CHECK (w.QuantityRemains - w.QuantityIssue) > goodsReceiptDetailAvailable.QuantityAvailable && (w.LineVolumeRemains - w.LineVolumeIssue) > goodsReceiptDetailAvailable.LineVolumeAvailable. THESE PROPERTIES ARE USED FOR THIS PURPOSE ONLY
                                        pendingPrimaryDetail.QuantityIssue   = Math.Round(pendingPrimaryDetail.QuantityIssue + (decimal)goodsReceiptDetailAvailable.QuantityAvailable, GlobalEnums.rndQuantity, MidpointRounding.AwayFromZero);
                                        pendingPrimaryDetail.LineVolumeIssue = Math.Round(pendingPrimaryDetail.LineVolumeIssue + (decimal)goodsReceiptDetailAvailable.LineVolumeAvailable, GlobalEnums.rndVolume, MidpointRounding.AwayFromZero);

                                        goodsReceiptDetailAvailable.DeliveryAdviceID       = pendingPrimaryDetail.DeliveryAdviceID;
                                        goodsReceiptDetailAvailable.DeliveryAdviceDetailID = pendingPrimaryDetail.DeliveryAdviceDetailID;

                                        goodsReceiptDetailAvailable.TransferOrderID       = pendingPrimaryDetail.TransferOrderID;
                                        goodsReceiptDetailAvailable.TransferOrderDetailID = pendingPrimaryDetail.TransferOrderDetailID;

                                        goodsReceiptDetailAvailable.PrimaryReference = pendingPrimaryDetail.PrimaryReference;
                                        goodsReceiptDetailAvailable.PrimaryEntryDate = pendingPrimaryDetail.PrimaryEntryDate;

                                        goodsReceiptDetailAvailable.QuantityRemains   = (decimal)pendingPrimaryDetail.QuantityRemains;
                                        goodsReceiptDetailAvailable.LineVolumeRemains = (decimal)pendingPrimaryDetail.LineVolumeRemains;

                                        goodsReceiptDetailAvailable.IsSelected = true;
                                    }
                                    else
                                    {
                                        mismatchedBarcodes.Add(new MismatchedBarcode()
                                        {
                                            Barcode = barcode, Description = "Số lượng xuất vượt quá yêu cầu. Vui lòng kiểm tra lại.", QuantityAvailable = goodsReceiptDetailAvailable.QuantityAvailable, LineVolumeAvailable = goodsReceiptDetailAvailable.LineVolumeAvailable
                                        });
                                    }
                                }
                                else
                                {
                                    mismatchedBarcodes.Add(new MismatchedBarcode()
                                    {
                                        Barcode = barcode, Description = "Trùng mã vạch. Bạn đã quét mã vạch này nhiều lần?", QuantityAvailable = goodsReceiptDetailAvailable.QuantityAvailable, LineVolumeAvailable = goodsReceiptDetailAvailable.LineVolumeAvailable
                                    });
                                }
                            }
                            else
                            {
                                mismatchedBarcodes.Add(new MismatchedBarcode()
                                {
                                    Barcode = barcode, Description = "Không tìm thấy. Bạn đã xả pallet ra chưa?"
                                });
                            }
                        }
                    }

                    goodsReceiptPalletAvailables = goodsReceiptDetailAvailables.Where(w => w.PalletID != null && w.IsSelected == true);
                    goodsReceiptCartonAvailables = goodsReceiptDetailAvailables.Where(w => w.CartonID != null && w.IsSelected == true);
                    if (this.UsingPack)
                    {
                        goodsReceiptPackAvailables = goodsReceiptDetailAvailables.Where(w => w.PackID != null && w.IsSelected == true);
                    }
                }

                this.fastAvailablePallets.SetObjects(goodsReceiptPalletAvailables);
                this.fastAvailableCartons.SetObjects(goodsReceiptCartonAvailables);
                if (this.UsingPack)
                {
                    this.fastAvailablePacks.SetObjects(goodsReceiptPackAvailables);
                }
                if (this.fileName != null)
                {
                    this.fastMismatchedBarcodes.SetObjects(mismatchedBarcodes);
                }

                this.ShowRowCount();
            }
            catch (Exception exception)
            {
                ExceptionHandlers.ShowExceptionMessageBox(this, exception);
            }
            finally
            {
                this.pendingPrimaryDetails.Each(p => { p.QuantityIssue = 0; p.LineVolumeIssue = 0; });
            }
        }