Esempio n. 1
0
        private void btnFix_Click(object sender, EventArgs e)
        {
            if (grdData.Rows.Count == 0 ||
                dt == null ||
                dt.Rows.Count == 0 ||
                grdData.CurrentRow == null)
            {
                return;
            }

            if (cboGoodState.SelectedIndex < 0 || cboGoodState.SelectedValue == null)
            {
                RFMMessage.MessageBoxError("Ќе указано состо¤ние товара дл¤ закреплени¤ ¤чейки...");
                return;
            }

            // текущий товар
            DataRow r          = ((DataRowView)grdData.CurrentRow.DataBoundItem).Row;
            int     nPackingID = Convert.ToInt32(r["PackingID"]);
            int?    nCellID    = null;

            // список свободных ¤чеек
            Cell oCell = new Cell();

            oCell.FilterActual = true;
            oCell.FilterLocked = false;
            oCell.FilterStoreZoneTypeForPicking = true;
            oCell.FilterHasCellContent          = false;
            oCell.FilterTrafficsFromExists      = false;
            oCell.FilterTrafficsToExists        = false;
            oCell.FillData();
            if (oCell.ErrorNumber != 0 || oCell.MainTable == null)
            {
                RFMMessage.MessageBoxError("ќшибка при получении списка ¤чеек...");
                return;
            }
            if (oCell.MainTable.Rows.Count == 0)
            {
                RFMMessage.MessageBoxError("Ќе найдены подход¤щие ¤чейки пикинга...");
                return;
            }

            DataTable dtCells = CopyTable(oCell.MainTable, "dtCells", ((chkCellsFreeOnly.Checked) ? "FixedPackingID is Null" : ""), "StoreZoneName, Address");

            //
            _SelectedID = null;
            if (StartForm(new frmSelectID(this, dtCells, "Address, StoreZoneName, TemperatureMode, PackingAlias", "јдрес, «она, T, “овар", false)) == DialogResult.Yes)
            {
                if (_SelectedID.HasValue)
                {
                    nCellID = _SelectedID;
                }
            }
            _SelectedID = null;
            if (nCellID.HasValue)
            {
                DataColumn[] pk = new DataColumn[1];
                pk[0] = dtCells.Columns["ID"];
                dtCells.PrimaryKey = pk;

                DataRow c = dtCells.Rows.Find(nCellID);
                int?    nFixedPackingOldID = null;
                if (c != null)
                {
                    // температурный режим
                    string sGoodTemperatureMode = r["TemperatureMode"].ToString();                     // товар
                    string sCellTemperatureMode = c["TemperatureMode"].ToString();                     // ¤чейка
                    if (sCellTemperatureMode != null)
                    {
                        if (sCellTemperatureMode != sGoodTemperatureMode)
                        {
                            RFMMessage.MessageBoxError("“емпературный режим выбранной ¤чейки (" + sCellTemperatureMode + ") не совпадает " +
                                                       "с требуемым температурным режимом дл¤ товара \"" + r["PackingAlias"].ToString() + "\" (" + sGoodTemperatureMode + ")...");
                            return;
                        }
                    }

                    //
                    if (!Convert.IsDBNull(c["FixedPackingID"]) &&
                        Convert.ToInt32(c["FixedPackingID"]) != nPackingID)
                    {
                        nFixedPackingOldID = Convert.ToInt32(c["FixedPackingID"]);
                        if (RFMMessage.MessageBoxYesNo("¬ыбранна¤ ¤чейка закреплена за товаром\n" +
                                                       "\"" + c["PackingAlias"].ToString() + "\".\n" +
                                                       "ѕосле закреплени¤ данный товар останетс¤ без закреплени¤ за ¤чейкой пикинга.\n\n" +
                                                       "ѕродолжить?") != DialogResult.Yes)
                        {
                            return;
                        }
                    }

                    // можно закрепл¤ть
                    int?nOwnerID = null;
                    if (cboOwner.SelectedValue != null && cboOwner.SelectedIndex >= 0)
                    {
                        nOwnerID = (int)cboOwner.SelectedValue;
                    }
                    int?nGoodStateID = null;
                    if (cboGoodState.SelectedValue != null && cboGoodState.SelectedIndex >= 0)
                    {
                        nGoodStateID = Convert.ToInt32(cboGoodState.SelectedValue);
                    }

                    oPacking.ClearError();
                    oPacking.FixedSave(nPackingID, (int)nCellID, nGoodStateID, nOwnerID);
                    if (oPacking.ErrorNumber != 0)
                    {
                        RFMMessage.MessageBoxError("ќшибка при сохранении фиксированного закреплени¤ товара...");
                        return;
                    }

                    // показали текущее закрепление
                    r["CellID"]        = nCellID;
                    r["Address"]       = c["Address"].ToString();
                    r["StoreZoneName"] = c["StoreZoneName"].ToString();

                    // убрали из показа старое закрепление дл¤ другого товара, если оно тут было
                    if (nFixedPackingOldID.HasValue)
                    {
                        DataRow pOld = dt.Rows.Find(nFixedPackingOldID);
                        if (pOld != null)
                        {
                            pOld["CellID"]        = null;
                            pOld["Address"]       = "";
                            pOld["StoreZoneName"] = "";
                        }
                    }
                    grdData.Refresh();
                }
            }
        }