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(); } } }