Example #1
0
        private void PrintTrafficBill(DataDynamics.ActiveReports.ActiveReport3 rpReport)
        {
            // список операций
            TrafficGood oTrafficPrint = new TrafficGood();
            int         nMarkedCnt    = CalcMarkedRows();

            if (nMarkedCnt > 0 &&
                RFMMessage.MessageBoxYesNo("Отмечено записей: " + nMarkedCnt.ToString() + "\r\n" +
                                           "Напечатать лист заданий для всех отмеченных записей?") != DialogResult.Yes)
            {
                return;
            }
            TrafficPrepareIDList(oTrafficPrint, nMarkedCnt > 0);
            oTrafficPrint.FillData();
            if (oTrafficPrint.MainTable.Rows.Count == 0)
            {
                return;
            }

            DataView dv = new DataView(oTrafficPrint.MainTable);

            dv.Sort = "OutputID, CellTargetAddress, StoreZoneSourceID, CellSourceRank, CellSourceAddress, GoodAlias";
            DataTable tTable = dv.ToTable();

            // печать
            StartForm(new frmActiveReport(tTable, rpReport));
        }
Example #2
0
        private void btnEdit_Click(object sender, EventArgs e)
        {
            if (grdData.CurrentRow == null)
            {
                return;
            }

            // перечитаем текущее состояние задания
            oTrafficCur.ClearError();
            oTrafficCur.ClearData();
            oTrafficCur.ClearFilters();
            oTrafficCur.ID = (int)grdData.CurrentRow.Cells["grcID"].Value;
            oTrafficCur.FillData();
            if (oTrafficCur.ErrorNumber != 0 || oTrafficCur.MainTable.Rows.Count != 1)
            {
                return;
            }

            DataRow r = oTrafficCur.MainTable.Rows[0];

            if ((bool)r["IsConfirmed"])
            {
                RFMMessage.MessageBoxError("Задание уже подтверждено.\n" +
                                           "Изменение невозможно.");
                return;
            }

            if (r["DateAccept"] != DBNull.Value)
            {
                RFMMessage.MessageBoxError("Задание уже выполняется.\n" +
                                           "Изменение невозможно.");
                return;
            }

            if (StartForm(new frmTrafficsGoodsEdit((int)oTrafficCur.ID)) == DialogResult.Yes)
            {
                grdData_Restore();
            }
        }
Example #3
0
        private bool TrafficChoose()
        {
            WaitOn(this);

            bool bResult = true;

            oTraffic.FillData();
            if (oTraffic.ErrorNumber != 0 || oTraffic.MainTable.Rows.Count == 0)
            {
                RFMMessage.MessageBoxError("Не найдена запись для операции перемещения коробок/штук с кодом " + oTraffic.ID.ToString() + "...");
                bResult = false;
            }

            if (bResult)
            {
                DataRow r = oTraffic.MainTable.Rows[0];

                // товар в операции перемещения
                txtPackingAlias.Text = r["PackingAlias"].ToString();

                decimal nInBox = Convert.ToDecimal(r["InBox"]);
                _nInBox    = nInBox;
                bWeighting = Convert.ToBoolean(r["Weighting"]);

                decimal nQntWished = Convert.ToDecimal(r["QntWished"]);
                _nQntWished = nQntWished;

                int     nBoxWished     = 0;
                decimal nRestQntWished = 0;
                if (!bWeighting)
                {
                    nBoxWished     = Convert.ToInt32(Math.Floor(nQntWished / nInBox));
                    nRestQntWished = nQntWished - nBoxWished * nInBox;
                }
                else
                {
                    nRestQntWished = nQntWished;
                }
                numBoxWished.Value        =
                    numBoxConfirmed.Value =
                        nBoxWished;
                numBoxConfirmed.Enabled       = !bWeighting;
                numRestQntWished.Value        =
                    numRestQntConfirmed.Value =
                        nRestQntWished;
                numRestQntWished.DecimalPlaces        =
                    numRestQntConfirmed.DecimalPlaces =
                        ((bWeighting || ((int)nInBox != nInBox)) ? 3 : 0);
                txtOwner.Text     = r["OwnerName"].ToString();
                txtGoodState.Text = r["GoodStateName"].ToString();

                if (r["UserID"] == DBNull.Value || r["UserID"] == null)
                {
                    cboUser.SelectedIndex = -1;
                }
                else
                {
                    cboUser.SelectedValue = (int)r["UserID"];
                }

                /*
                 * if (r["DeviceID"] == DBNull.Value || r["DeviceID"] == null)
                 *      cboDevice.SelectedIndex = -1;
                 * else
                 *      cboDevice.SelectedValue = (int)r["DeviceID"];
                 */

                numPriority.Value = (int)r["Priority"];

                if (r["DateAccept"] != DBNull.Value)
                {
                    cboUser.Enabled = cboDevice.Enabled = false;
                }

                // ячейка-источник
                oCellSource.ID = (int)r["CellSourceID"];
                oCellSource.FillData();
                DataRow rcs = oCellSource.MainTable.Rows[0];
                cboStoresZonesSource.SelectedValue      = (int)rcs["StoreZoneID"];
                cboStoresZonesTypesSource.SelectedValue = (int)rcs["StoreZoneTypeID"];

                // ячейка-приемник
                oCellTarget.ID = (int)r["CellTargetID"];
                oCellTarget.FillData();
                DataRow rct = oCellTarget.MainTable.Rows[0];
                cboStoresZonesTarget.SelectedValue      = (int)rct["StoreZoneID"];
                cboStoresZonesTypesTarget.SelectedValue = (int)rct["StoreZoneTypeID"];

                bResult = (oCellSource.ErrorNumber == 0) &&
                          (oCellTarget.ErrorNumber == 0);

                if (bResult)
                {
                    bResult = cboCellSourceAddress_Restore() &&
                              cboCellTargetAddress_Restore();
                }
            }

            WaitOff(this);
            return(bResult);
        }
Example #4
0
        private bool grdData_Restore()
        {
            RFMCursorWait.Set(true);
            RFMCursorWait.LockWindowUpdate(FindForm().Handle);

            oTrafficCur.ID = null;

            oTrafficList.ClearError();
            oTrafficList.ClearFilters();
            oTrafficList.ID     = null;
            oTrafficList.IDList = null;

            // собираем условия

            // штрих-код
            //if (txtBarCode.Text.Trim().Length > 0)
            //    oTrafficList.BarCode = txtBarCode.Text.Trim();
            // даты
            if (!dtrDates.dtpBegDate.IsEmpty)
            {
                oTrafficList.FilterDateBeg = dtrDates.dtpBegDate.Value.Date;
            }
            if (!dtrDates.dtpEndDate.IsEmpty)
            {
                oTrafficList.FilterDateEnd = dtrDates.dtpEndDate.Value.Date;
            }
            // ИСТОЧНИК
            // ячейка
            Cell oCellSource = new Cell();

            oCellSource.ClearData();
            if ((txtCellSourceBarCode.Text.Trim().Length > 0) |
                (txtCellSourceAddress.Text.Trim().Length > 0))
            {
                if (txtCellSourceBarCode.Text.Trim().Length > 0)
                {
                    oCellSource.BarCode = txtCellSourceBarCode.Text.Trim();
                }
                if (txtCellSourceAddress.Text.Trim().Length > 0)
                {
                    oCellSource.FilterAddress = txtCellSourceAddress.Text.Trim();
                }
                oCellSource.FillData();
                if (oCellSource.MainTable.Rows.Count > 0)
                {
                    StringBuilder sbCS = new StringBuilder("");
                    foreach (DataRow r in oCellSource.MainTable.Rows)
                    {
                        sbCS = sbCS.Append(r["ID"].ToString() + ",");
                    }
                    if (sbCS.Length > 0)
                    {
                        oTrafficList.FilterCellsSourceList = sbCS.ToString();
                    }
                }
                else
                {
                    oTrafficList.FilterCellsSourceList = "-1";
                }
            }
            // зоны
            if (sSelectedStoresZonesSourceIDList.Length > 0)
            {
                oTrafficList.FilterStoresZonesSourceList = sSelectedStoresZonesSourceIDList;
            }
            if (sSelectedStoresZonesTypesSourceIDList.Length > 0)
            {
                oTrafficList.FilterStoresZonesTypesSourceList = sSelectedStoresZonesTypesSourceIDList;
            }
            // ПРИЕМНИК
            // ячейка
            Cell oCellTarget = new Cell();

            oCellTarget.ClearData();
            if ((txtCellTargetBarCode.Text.Trim().Length > 0) |
                (txtCellTargetAddress.Text.Trim().Length > 0))
            {
                if (txtCellTargetBarCode.Text.Trim().Length > 0)
                {
                    oCellTarget.BarCode = txtCellTargetBarCode.Text.Trim();
                }
                if (txtCellTargetAddress.Text.Trim().Length > 0)
                {
                    oCellTarget.FilterAddress = txtCellTargetAddress.Text.Trim();
                }
                oCellTarget.FillData();
                if (oCellTarget.MainTable.Rows.Count > 0)
                {
                    StringBuilder sbCT = new StringBuilder("");
                    foreach (DataRow r in oCellTarget.MainTable.Rows)
                    {
                        sbCT = sbCT.Append(r["ID"].ToString() + ",");
                    }
                    if (sbCT.Length > 0)
                    {
                        oTrafficList.FilterCellsTargetList = sbCT.ToString();
                    }
                }
                else
                {
                    oTrafficList.FilterCellsTargetList = "-1";
                }
            }
            // зоны
            if (sSelectedStoresZonesTargetIDList.Length > 0)
            {
                oTrafficList.FilterStoresZonesTargetList = sSelectedStoresZonesTargetIDList;
            }
            if (sSelectedStoresZonesTypesTargetIDList.Length > 0)
            {
                oTrafficList.FilterStoresZonesTypesTargetList = sSelectedStoresZonesTypesTargetIDList;
            }

            // состояние операций
            if (optNotConfirmed.Checked)
            {
                oTrafficList.FilterConfirmed = false;
            }
            if (optSuccess.Checked)
            {
                oTrafficList.FilterConfirmed = true;
                oTrafficList.FilterSuccess   = true;
            }
            if (optNotSuccess.Checked)
            {
                oTrafficList.FilterConfirmed = true;
                oTrafficList.FilterSuccess   = false;
            }

            // приходы-расходы
            if (txtInputBarCode.Text.Length > 0)
            {
                Input oInputFilter = new Input();
                oInputFilter.BarCode = txtInputBarCode.Text.Trim();
                oInputFilter.FillData();
                // если не нашли ни одного прихода по указанному штрих-коду,
                // все равно должны передать "", чтобы не получить ни одного перемещения
                string sInputBarCode = "";
                foreach (DataRow r in oInputFilter.MainTable.Rows)
                {
                    sInputBarCode = sInputBarCode + "," + r["ID"].ToString();
                }
                oTrafficList.FilterInputsList = sInputBarCode;
            }
            if (txtOutputBarCode.Text.Length > 0)
            {
                Output oOutputFilter = new Output();
                oOutputFilter.BarCode = txtOutputBarCode.Text.Trim();
                oOutputFilter.FillData();
                // если не нашли ни одного прихода по указанному штрих-коду,
                // все равно должны передать "", чтобы не получить ни одного перемещения
                string sOutputBarCode = "";
                foreach (DataRow r in oOutputFilter.MainTable.Rows)
                {
                    sOutputBarCode = sOutputBarCode + "," + r["ID"].ToString();
                }
                oTrafficList.FilterOutputsList = sOutputBarCode;
            }

            // пользователи
            if (sSelectedUsersIDList.Length > 0)
            {
                oTrafficList.FilterUsersList = sSelectedUsersIDList;
            }
            // выбранные товары
            if (sSelectedPackingIDList.Length > 0)
            {
                oTrafficList.FilterPackingsList = sSelectedPackingIDList;
            }
            //

            grdData.GetGridState();

            oTrafficList.FillData();

            grdData.IsLockRowChanged = true;
            grdData.Restore(oTrafficList.MainTable);

            //grdData.GridSource.Sort = "ID desc";

            RFMCursorWait.LockWindowUpdate(IntPtr.Zero);
            RFMCursorWait.Set(false);

            return(oTrafficList.ErrorNumber == 0);
        }
Example #5
0
        private void mniServiceTrafficGoodChangeUser_Click(object sender, EventArgs e)
        {
            RFMMenuUtilities.MenuClear((ToolStripMenuItem)sender);

            if (grdData.DataSource == null || grdData.Rows.Count == 0)
            {
                return;
            }

            // текущая запись или все отмеченные
            string sText = "Зарегистрировать сотрудника, выполнявшего ";
            int    nCnt  = CalcMarkedRows();

            if (nCnt == 0)
            {
                if (grdData.CurrentRow == null || grdData.IsStatusRow(grdData.CurrentRow.Index))
                {
                    return;
                }

                sText += "текущее перемещение";
                nCnt   = 1;
            }
            else
            {
                sText += RFMUtilities.Declen(nCnt, "отмеченное перемещение", "отмеченных перемещения", "отмеченных перемещений");
            }
            sText += " коробок/штук?";
            if (RFMMessage.MessageBoxYesNo(sText) == DialogResult.Yes)
            {
                // список сотрудников
                User oUser = new User();
                oUser.FilterActual = true;
                oUser.FillData();
                if (oUser.ErrorNumber != 0 || oUser.MainTable == null)
                {
                    RFMMessage.MessageBoxError("Ошибка при получении данных о сотрудниках...");
                    return;
                }
                if (oUser.MainTable.Rows.Count == 0)
                {
                    RFMMessage.MessageBoxError("Нет данных о сотрудниках...");
                    return;
                }

                int    nNewUserID   = 0;
                string sNewUserName = "";
                _SelectedID = null;
                if (StartForm(new frmSelectID(this, oUser.MainTable, "Name", "Сотрудник", "Сотрудник, выполнявший перемещения")) == DialogResult.Yes)
                {
                    if (_SelectedID.HasValue)
                    {
                        nNewUserID   = (int)_SelectedID;
                        sNewUserName = _SelectedText;
                    }
                }
                if (nNewUserID == 0)
                {
                    return;
                }

                TrafficGood oTrafficGoodForChangeUser = new TrafficGood();
                TrafficPrepareIDList(oTrafficGoodForChangeUser, true);
                if (!oTrafficGoodForChangeUser.ID.HasValue &&
                    (oTrafficGoodForChangeUser.IDList == null || oTrafficGoodForChangeUser.IDList.Length == 0))
                {
                    oTrafficGoodForChangeUser.ID = Convert.ToInt32(grdData.CurrentRow.Cells["grcID"].Value);
                }
                oTrafficGoodForChangeUser.FillData();
                if (oTrafficGoodForChangeUser.ErrorNumber != 0 || oTrafficGoodForChangeUser.MainTable == null)
                {
                    RFMMessage.MessageBoxError("Ошибка при получении данных о перемещениях коробок/штук...");
                    return;
                }
                if (oTrafficGoodForChangeUser.MainTable.Rows.Count == 0)
                {
                    RFMMessage.MessageBoxError("Нет данных о выбранных перемещениях коробок/штук...");
                    return;
                }

                // уже есть данные о сотрудниках в выбранных перемещениях?
                int nOldUsersCnt = 0;
                foreach (DataRow tr in oTrafficGoodForChangeUser.MainTable.Rows)
                {
                    if (!Convert.IsDBNull(tr["UserID"]))
                    {
                        nOldUsersCnt++;
                    }
                }
                if (nOldUsersCnt > 0)
                {
                    if (oTrafficGoodForChangeUser.MainTable.Rows.Count == 1)
                    {
                        // одно перемещение
                        if (RFMMessage.MessageBoxYesNo("Для выбранного перемещения уже зарегистрирован сотрудник.\n" +
                                                       "Все-таки зарегистрировать нового сотрудника \"" + sNewUserName + "\"?") != DialogResult.Yes)
                        {
                            return;
                        }
                    }
                    else
                    {
                        // не одно перемещение
                        if (RFMMessage.MessageBoxYesNo("Для " + nOldUsersCnt.ToString().Trim() + " из " + RFMUtilities.Declen(nCnt, " выбранного перемещения", "выбранных перемещений", "выбранных перемещений") + " коробок/штук уже зарегистрирован сотрудник.\n" +
                                                       "Все-таки зарегистрировать нового сотрудника \"" + sNewUserName + "\" для всех " + RFMUtilities.Declen(nCnt, " выбранного перемещения", "выбранных перемещений", "выбранных перемещений") + " коробок/штук?") != DialogResult.Yes)
                        {
                            return;
                        }
                    }
                }

                foreach (DataRow tr in oTrafficGoodForChangeUser.MainTable.Rows)
                {
                    oTrafficGoodForChangeUser.UserChange((int)tr["ID"], nNewUserID);
                }

                grdData_Restore();
            }
        }
        private void btnCellNewChoose_Click(object sender, EventArgs e)
        {
            nCellNewID                   = null;
            txtCellNewAddress.Text       =
                txtStoreZoneNewName.Text =
                    "";

            _SelectedCellID = null;

            if (StartForm(new frmSelectOneCell(this)) == DialogResult.Yes)
            {
                if (_SelectedCellID != null)
                {
                    int nCellNewID_Temp = (int)_SelectedCellID;

                    oCellNew.ID = (int)nCellNewID_Temp;
                    oCellNew.FillData();
                    if (oCellNew.ErrorNumber != 0 || oCellNew.MainTable == null || oCellNew.MainTable.Rows.Count != 1)
                    {
                        RFMMessage.MessageBoxError("ќшибка при получении данных о новой ¤чейке...");
                        return;
                    }

                    if (nCellCurID.HasValue && nCellNewID_Temp == nCellCurID)
                    {
                        RFMMessage.MessageBoxError("¬ыбрана та же ¤чейка...");
                        return;
                    }

                    DataRow c = oCellNew.MainTable.Rows[0];
                    // проверки - можно ли сделать закрепление в эту ¤чейку?

                    // 1. это подход¤щий тип ¤чейки?
                    if (!Convert.ToBoolean(c["ForStorage"]) || !Convert.ToBoolean(c["ForPicking"]))
                    {
                        RFMMessage.MessageBoxError("ячейка имеет другой тип...");
                        return;
                    }

                    // 2.1. есть остаток?
                    oCellNew.FillTableCellsContents(nCellNewID_Temp, false);
                    if (oCellNew.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при анализе наличи¤ товаров в ¤чейке...");
                        return;
                    }

                    foreach (DataRow cc in oCellNew.TableCellsContents.Rows)
                    {
                        if (Convert.ToDecimal(cc["Qnt"]) != 0)
                        {
                            RFMMessage.MessageBoxError("¬ ¤чейке имеетс¤ другой товар...");
                            return;
                        }
                    }

                    // 2.2. есть трафики в/из новой ¤чейки
                    TrafficFrame oTrafficFrameTemp = new TrafficFrame();
                    oTrafficFrameTemp.FilterConfirmed = false;

                    oTrafficFrameTemp.FilterCellsTargetList = nCellNewID_Temp.ToString();
                    oTrafficFrameTemp.FillData();
                    if (oTrafficFrameTemp.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при анализе наличи¤ транспортировок поддонов в ¤чейку...");
                        return;
                    }
                    if (oTrafficFrameTemp.MainTable.Rows.Count > 0)
                    {
                        RFMMessage.MessageBoxError("≈сть невыполненные транспортировки поддонов в ¤чейку...");
                        return;
                    }

                    oTrafficFrameTemp.FilterCellsTargetList = null;
                    oTrafficFrameTemp.FilterCellsSourceList = nCellNewID_Temp.ToString();
                    oTrafficFrameTemp.FillData();
                    if (oTrafficFrameTemp.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при анализе наличи¤ транспортировок поддонов из ¤чейки...");
                        return;
                    }
                    if (oTrafficFrameTemp.MainTable.Rows.Count > 0)
                    {
                        RFMMessage.MessageBoxError("≈сть невыполненные транспортировки поддонов из ¤чейки...");
                        return;
                    }


                    TrafficGood oTrafficGoodTemp = new TrafficGood();
                    oTrafficGoodTemp.FilterConfirmed = false;

                    oTrafficGoodTemp.FilterCellsTargetList = nCellNewID_Temp.ToString();
                    oTrafficGoodTemp.FillData();
                    if (oTrafficGoodTemp.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при анализе наличи¤ перемещений коробок в ¤чейку...");
                        return;
                    }
                    if (oTrafficGoodTemp.MainTable.Rows.Count > 0)
                    {
                        RFMMessage.MessageBoxError("≈сть невыполненные перемещени¤ коробок в ¤чейку...");
                        return;
                    }

                    oTrafficGoodTemp.FilterCellsTargetList = null;
                    oTrafficGoodTemp.FilterCellsSourceList = nCellNewID_Temp.ToString();
                    oTrafficGoodTemp.FillData();
                    if (oTrafficGoodTemp.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при анализе наличи¤ перемещений коробок из ¤чейки...");
                        return;
                    }
                    if (oTrafficGoodTemp.MainTable.Rows.Count > 0)
                    {
                        RFMMessage.MessageBoxError("≈сть невыполненные перемещени¤ коробок из ¤чейки...");
                        return;
                    }

                    // 2. товар
                    if (!Convert.IsDBNull(c["FixedPackingID"]))
                    {
                        int nPackingTempID = Convert.ToInt32(c["FixedPackingID"]);
                        if (nPackingTempID == nPackingID)
                        {
                            RFMMessage.MessageBoxError("ячейка уже закреплена за этим товаром...");
                            return;
                        }

                        else
                        {
                            // ¤чейка закреплена за другим товаром
                            if (RFMMessage.MessageBoxYesNo("Ќова¤ ¤чейка закреплена за другим товаром\n(" + c["PackingAlias"].ToString() + ").\n\n" +
                                                           "ѕродолжить?") != DialogResult.Yes)
                            {
                                return;
                            }
                        }
                    }

                    // нова¤ ¤чейка пуста и по всем отношени¤м нам подходит

                    // спросим еще про остатки и трафики в/из текущей ¤чейки, если есть
                    // (DateAccept проверим уже в хр_пр)
                    oCellCur.FillTableCellsContents((int)nCellCurID, false);
                    if (oCellCur.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при анализе наличи¤ товаров в текущей ¤чейке...");
                        return;
                    }

                    foreach (DataRow cc in oCellCur.TableCellsContents.Rows)
                    {
                        if (Convert.ToDecimal(cc["Qnt"]) != 0)
                        {
                            if (RFMMessage.MessageBoxYesNo("¬ текущей ¤чейке имеетс¤ товар.\n" +
                                                           "¬есь он будет переведен в новую ¤чейку.\n\nѕродолжить?") != DialogResult.Yes)
                            {
                                return;
                            }
                        }
                    }


                    TrafficFrame oTrafficFrameCur = new TrafficFrame();
                    oTrafficFrameCur.FilterConfirmed = false;

                    oTrafficFrameCur.FilterCellsTargetList = nCellCurID.ToString();
                    oTrafficFrameCur.FillData();
                    if (oTrafficFrameCur.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при анализе наличи¤ транспортировок поддонов в текущую ¤чейку...");
                        return;
                    }
                    if (oTrafficFrameCur.MainTable.Rows.Count > 0)
                    {
                        if (RFMMessage.MessageBoxYesNo("≈сть невыполненные транспортировки поддонов в текущую ¤чейку.\n" +
                                                       "¬се они будут переведены в новую ¤чейку.\n\nѕродолжить?") != DialogResult.Yes)
                        {
                            return;
                        }
                    }

                    oTrafficFrameCur.FilterCellsTargetList = null;
                    oTrafficFrameCur.FilterCellsSourceList = nCellCurID.ToString();
                    oTrafficFrameCur.FillData();
                    if (oTrafficFrameCur.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при анализе наличи¤ транспортировок поддонов из текущей ¤чейки...");
                        return;
                    }
                    if (oTrafficFrameCur.MainTable.Rows.Count > 0)
                    {
                        if (RFMMessage.MessageBoxYesNo("≈сть невыполненные транспортировки поддонов из текущей ¤чейки.\n" +
                                                       "¬се они будут переведены в новую ¤чейку.\n\nѕродолжить?") != DialogResult.Yes)
                        {
                            return;
                        }
                    }


                    TrafficGood oTrafficGoodCur = new TrafficGood();
                    oTrafficGoodCur.FilterConfirmed = false;

                    oTrafficGoodCur.FilterCellsTargetList = nCellCurID.ToString();
                    oTrafficGoodCur.FillData();
                    if (oTrafficGoodCur.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при анализе наличи¤ перемещений коробок в текущую ¤чейку...");
                        return;
                    }
                    if (oTrafficGoodCur.MainTable.Rows.Count > 0)
                    {
                        if (RFMMessage.MessageBoxYesNo("≈сть невыполненные перемещени¤ коробок в текущую ¤чейку.\n" +
                                                       "¬се они будут переведены в новую ¤чейку.\n\nѕродолжить?") != DialogResult.Yes)
                        {
                            return;
                        }
                    }

                    oTrafficGoodCur.FilterCellsTargetList = null;
                    oTrafficGoodCur.FilterCellsSourceList = nCellCurID.ToString();
                    oTrafficGoodCur.FillData();
                    if (oTrafficGoodCur.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при анализе наличи¤ перемещений коробок из ¤чейки...");
                        return;
                    }
                    if (oTrafficGoodCur.MainTable.Rows.Count > 0)
                    {
                        if (RFMMessage.MessageBoxYesNo("≈сть невыполненные перемещени¤ коробок из текущей ¤чейки.\n" +
                                                       "¬се они будут переведены в новую ¤чейку.\n\nѕродолжить?") != DialogResult.Yes)
                        {
                            return;
                        }
                    }

                    // OwnerID? GoodStateID?

                    nCellNewID  = (int)nCellNewID_Temp;
                    oCellNew.ID = nCellNewID;

                    txtCellNewAddress.Text   = c["Address"].ToString();
                    txtStoreZoneNewName.Text = c["StoreZoneName"].ToString();
                }
            }
        }
        private void frmTrafficManual_Load(object sender, EventArgs e)
        {
            bool bResult = true;

            oCellSource.ID = oCellTarget.ID = -1;
            bResult        = cboStoresZonesSource_Restore() &&
                             cboStoresZonesTypesSource_Restore() &&
                             cboCellSourceAddress_Restore() &&
                             cboStoresZonesTarget_Restore() &&
                             cboStoresZonesTypesTarget_Restore() &&
                             cboCellTargetAddress_Restore();

            if (bResult)
            {
                cboCellSourceAddress.SelectedIndex                          =
                    cboStoresZonesSource.SelectedIndex                      =
                        cboStoresZonesTypesSource.SelectedIndex             =
                            cboCellTargetAddress.SelectedIndex              =
                                cboStoresZonesTarget.SelectedIndex          =
                                    cboStoresZonesTypesTarget.SelectedIndex = -1;
            }

            if (oTrafficOld.ID != null)
            {
                oTrafficOld.FillData();
                if (oTrafficOld.ErrorNumber != 0 || oTrafficOld.MainTable.Rows.Count == 0)
                {
                    RFMMessage.MessageBoxError("Ошибка при получении данных о текущей операции перемещения коробок/штук...");
                    // просто добавляем
                }
                else
                {
                    DataRow r = oTrafficOld.MainTable.Rows[0];
                    if (r != null)
                    {
                        // источник
                        int nCellSourceID = Convert.ToInt32(r["CellSourceID"]);
                        cboStoresZonesSource.SelectedValue      = Convert.ToInt32(r["StoreZoneSourceID"]);
                        cboStoresZonesTypesSource.SelectedValue = Convert.ToInt32(r["StoreZoneTypeSourceID"]);
                        cboCellSourceAddress.SelectedValue      = nCellSourceID;

                        int nPackingID = Convert.ToInt32(r["PackingID"]);
                        cboGood.SelectedValue = nPackingID;

                        _nInBox    = Convert.ToDecimal(r["InBox"]);
                        bWeighting = Convert.ToBoolean(r["Weighting"]);

                        if (r["OwnerID"] != DBNull.Value)
                        {
                            _nOwnerID = Convert.ToInt32(r["OwnerID"]);
                        }
                        _nGoodStateID = Convert.ToInt32(r["GoodStateID"]);

                        // данные о текущем наполнении ячейки
                        oCellSource.ID = nCellSourceID;
                        oCellSource.FillTableCellsContents(nCellSourceID, true);
                        foreach (DataRow rCC in oCellSource.TableCellsContents.Rows)
                        {
                            if (Convert.ToInt32(rCC["PackingID"]) == nPackingID &&
                                (rCC["OwnerID"] == DBNull.Value && _nOwnerID == null ||
                                 Convert.ToInt32(rCC["OwnerID"]) == _nOwnerID) &&
                                Convert.ToInt32(rCC["GoodStateID"]) == _nGoodStateID)
                            {
                                // нашли подходящую строку (объединены по срокам годности)
                                _nQntExists = Convert.ToDecimal(rCC["Qnt"]);
                            }
                        }

                        int     nBoxExists     = 0;
                        decimal nRestQntExists = 0;
                        if (!bWeighting)
                        {
                            nBoxExists     = Convert.ToInt32(Math.Floor(_nQntExists / _nInBox));
                            nRestQntExists = _nQntExists - nBoxExists * _nInBox;
                        }
                        else
                        {
                            nRestQntExists = _nQntExists;
                        }
                        numBoxExists.Value             = nBoxExists;
                        numRestQntExists.Value         = nRestQntExists;
                        numRestQntExists.DecimalPlaces = (bWeighting || ((int)_nInBox != _nInBox) ? 3 : 0);


                        decimal nQntWished     = Convert.ToDecimal(r["QntWished"]);
                        int     nBoxWished     = 0;
                        decimal nRestQntWished = 0;
                        if (!bWeighting)
                        {
                            nBoxWished     = Convert.ToInt32(Math.Floor(nQntWished / _nInBox));
                            nRestQntWished = nQntWished - nBoxWished * _nInBox;
                        }
                        else
                        {
                            nRestQntWished = nQntWished;
                        }
                        numBoxWished.Value             = nBoxWished;
                        numBoxWished.Enabled           = !bWeighting;
                        numRestQntWished.Value         = nRestQntWished;
                        numRestQntWished.DecimalPlaces = (bWeighting || ((int)_nInBox != _nInBox)) ? 3 : 0;

                        txtGoodState.Text  = r["GoodStateName"].ToString();
                        txtOwner.Text      = r["OwnerName"].ToString();
                        dtpDateValid.Value = DateTime.Now.Date;
                        dtpDateValid.HideControl(false);

                        // приемник
                        cboStoresZonesTarget.SelectedValue      = Convert.ToInt32(r["StoreZoneTargetID"]);
                        cboStoresZonesTypesTarget.SelectedValue = Convert.ToInt32(r["StoreZoneTypeTargetID"]);
                        cboCellTargetAddress.SelectedValue      = Convert.ToInt32(r["CellTargetID"]);
                    }
                }
            }

            if (bResult)
            {
                _bLoaded = true;
            }
            else
            {
                DialogResult = DialogResult.No;
                Dispose();
            }
            cboStoresZonesTypesSource.Enabled = false;
        }