Пример #1
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            // перебираем строки oCell

            int  nCnt        = 0;
            bool bDeleteHole = chkDeleteHole.Checked;

            // очистить результаты прошлой неудачной попытки удалени¤
            foreach (DataRow r in oCell.MainTable.Rows)
            {
                if (Convert.ToInt32(r["ID"]) < 0)
                {
                    r["ID"] = -Convert.ToInt32(r["ID"]);
                }
            }
            oCell.ClearError();

            if (RFMMessage.MessageBoxYesNo("¬ыполн¤етс¤ попытка удалени¤ " + RFMPublic.RFMUtilities.Declen(oCell.MainTable.Rows.Count, "¤чейки", "¤чеек", "¤чеек") + ".\n" +
                                           "ѕродолжить?") == DialogResult.Yes)
            {
                nCnt = oCell.Delete("TEST", bDeleteHole);
                if (nCnt > 0)
                {
                    if (RFMMessage.MessageBoxYesNo("ћожно удалить " + RFMUtilities.Declen(nCnt, "¤чейку", "¤чейки", "¤чеек") + ".\n" +
                                                   "¬ыполнить удаление?") == DialogResult.Yes)
                    {
                        nCnt = oCell.Delete("DELETE", bDeleteHole);
                        if (nCnt > 0)
                        {
                            RFMMessage.MessageBoxInfo("”далено: " + RFMUtilities.Declen(nCnt, "¤чейка", "¤чейки", "¤чеек") + ".");
                        }
                        else
                        {
                            RFMMessage.MessageBoxInfo("ячейки не были удалены...");
                        }
                    }
                }
                else
                {
                    RFMMessage.MessageBoxError("ячейки не могут быть удалены...");
                }

                if (oCell.ErrorNumber == 0 && nCnt > 0)
                {
                    DialogResult = DialogResult.Yes;
                    Dispose();
                }
            }
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            DateTime dDate = dtpDate.Value.Date;

            int nCnt = 0;

            if (grdTrips.Columns["dgvcIsMarked"] != null)
            {
                int nColIndex = grdTrips.Columns["dgvcIsMarked"].Index;
                foreach (DataGridViewRow gr in grdTrips.Rows)
                {
                    if (Convert.ToBoolean(gr.Cells[nColIndex].Value))
                    {
                        nCnt++;
                    }
                }
            }
            if (nCnt == 0)
            {
                RFMMessage.MessageBoxError("Не отмечено ни одного рейса...");
                return;
            }
            if (RFMMessage.MessageBoxYesNo("Создать " + RFMUtilities.Declen(nCnt, "рейс", "рейса", "рейсов") +
                                           " для " + ((optSelfDelivery.Checked)
                                                        ? RFMUtilities.Declen(nCnt, "машины клиента", "машин клиентов", "машин клиентов")
                                                        : RFMUtilities.Declen(nCnt, "арендованной машины", "арендованных машин", "арендованных машин")) +
                                           "\nна " + dDate.ToString("dd.MM.yyyy") + "?") != DialogResult.Yes)
            {
                return;
            }

            oTrip.ClearError();
            oTrip.SaveOthersByDate(tCars, dDate, optSelfDelivery.Checked);
            if (oTrip.ErrorNumber == 0)
            {
                RFMMessage.MessageBoxInfo("Рейсы созданы.");
                DialogResult = DialogResult.Yes;
                Dispose();
            }
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (!chkDocumentsOK.Checked)
            {
                if (txtNoteExecute.Text.Trim().Length == 0)
                {
                    RFMMessage.MessageBoxError("Не установлен признак \"Документы в порядке\".\n" +
                                               "Введите примечание к выполнению!");
                    txtNoteExecute.Select();
                    return;
                }
            }

            StringBuilder sbZero = new StringBuilder("");
            int           nZero = 0, nZeroSaid = 0;
            StringBuilder sbDiff = new StringBuilder("");
            int           nDiff = 0, nDiffSaid = 0;
            StringBuilder sbReturnZero = new StringBuilder("");
            int           nReturnZero = 0, nReturnZeroSaid = 0;
            StringBuilder sbReturnDiff = new StringBuilder("");
            int           nReturnDiff = 0, nReturnDiffSaid = 0;
            int           nReturnFirstID = -1;
            int           nLimit         = 10; // max число товаров при выводе проблем

            foreach (DataRow droOutGoods in oOutputDocument.TableOutputsDocumentsGoods.Rows)
            {
                if ((decimal)droOutGoods["QntBrought"] == 0)
                {
                    if ((decimal)droOutGoods["QntConfirmed"] > 0)
                    {
                        if (nZero < nLimit)
                        {
                            sbZero = sbZero.Append(droOutGoods["GoodAlias"].ToString() + "\n");
                            nZeroSaid++;
                        }
                        nZero++;

                        if (droOutGoods["ReturnReasonID"] == null || droOutGoods["ReturnReasonID"] == DBNull.Value)
                        {
                            if (nReturnZero < nLimit)
                            {
                                sbReturnZero = sbReturnZero.Append(droOutGoods["GoodAlias"].ToString() + "\n");
                                nReturnZeroSaid++;
                            }
                            nReturnZero++;

                            if (nReturnFirstID < 0)
                            {
                                nReturnFirstID = (int)droOutGoods["ID"];
                            }
                        }
                    }
                }
                else
                {
                    if ((decimal)droOutGoods["QntBrought"] != (decimal)droOutGoods["QntConfirmed"])
                    {
                        if (nDiff < nLimit)
                        {
                            sbDiff = sbDiff.Append(droOutGoods["GoodAlias"].ToString() + "\n");
                            nDiffSaid++;
                        }
                        nDiff++;

                        if (droOutGoods["ReturnReasonID"] == null || droOutGoods["ReturnReasonID"] == DBNull.Value)
                        {
                            if (nReturnDiff < nLimit)
                            {
                                sbReturnDiff = sbReturnDiff.Append(droOutGoods["GoodAlias"].ToString() + "\n");
                                nReturnDiffSaid++;
                            }
                            nReturnDiff++;

                            if (nReturnFirstID < 0)
                            {
                                nReturnFirstID = (int)droOutGoods["ID"];
                            }
                        }
                    }
                }
            }

            if (nZero > 0)
            {
                if (nZero == oOutputDocument.TableOutputsDocumentsGoods.Rows.Count)
                {
                    if (RFMMessage.MessageBoxYesNo("Ни один товар не доставлен получателю.\n\n" +
                                                   "Все-таки подтвердить доставку заказа?") == DialogResult.No)
                    {
                        return;
                    }
                }
                else
                {
                    if (nZero - nZeroSaid > 0)
                    {
                        sbZero = sbZero.Append("и еще " + RFMUtilities.Declen(nZero - nZeroSaid, "товар", "товара", "товаров") + "\n");
                    }
                    if (RFMMessage.MessageBoxYesNo("Следующие товары:\n" + sbZero + "не доставлены получателю.\n\n" +
                                                   "Все-таки подтвердить доставку заказа?") == DialogResult.No)
                    {
                        return;
                    }
                }
            }

            if (nDiff > 0)
            {
                if (nDiff - nDiffSaid > 0)
                {
                    sbDiff = sbDiff.Append("и еще " + RFMUtilities.Declen(nDiff - nDiffSaid, "товара", "товаров", "товаров") + "\n");
                }
                if (RFMMessage.MessageBoxYesNo("Для следующих товаров:\n" + sbDiff + "доставленное количество не равно отгруженному.\n\n" +
                                               "Все-таки подтвердить доставку заказа?") == DialogResult.No)
                {
                    return;
                }
            }

            // причины возврата
            if (nReturnZero > 0)
            {
                if (nReturnZero == oOutputDocument.TableOutputsDocumentsGoods.Rows.Count)
                {
                    /*
                     * if (RFMMessage.MessageBoxYesNo("Ни один товар не доставлен получателю,\n" +
                     *      "ни для одного товара не указаны причины возврата.\n\n" +
                     *      "Перенос заказа не был выполнен!\n\n" +
                     *      "Все-таки подтвердить доставку заказа?") == DialogResult.No)
                     *      return;
                     */
                    RFMMessage.MessageBoxError("Ни один товар не доставлен получателю,\n" +
                                               "ни для одного товара не указаны причины возврата.\n\n" +
                                               "Перенос заказа не был выполнен!\n\n" +
                                               "Подтверждение доставки заказа не выполняется!");
                    return;
                }
                else
                {
                    if (nReturnZero - nReturnZeroSaid > 0)
                    {
                        sbReturnZero = sbReturnZero.Append("и еще " + RFMUtilities.Declen(nReturnZero - nReturnZeroSaid, "товар", "товара", "товаров") + "\n");
                    }

                    /*
                     * if (RFMMessage.MessageBoxYesNo("Следующие товары:\n" + sbReturnZero + "не доставлены получателю и\n" +
                     *      "для них не указана причина возврата.\n\n" +
                     *      "Все-таки подтвердить доставку заказа?") == DialogResult.No)
                     *      return;
                     */
                    RFMMessage.MessageBoxError("Следующие товары:\n" + sbReturnZero + "не доставлены получателю и\n" +
                                               "для них не указана причина возврата.\n\n" +
                                               "Подтверждение доставки заказа не выполняется!");

                    if (nReturnFirstID >= 0)
                    {
                        int nGridPosition = ((RFMBindingSource)dgvOutputsDocumentsGoods.GridSource).Find("ID", nReturnFirstID);
                        if (nGridPosition >= 0)
                        {
                            dgvOutputsDocumentsGoods.GridSource.Position = nGridPosition;
                        }
                    }
                    return;
                }
            }

            if (nReturnDiff > 0)
            {
                if (nReturnDiff - nReturnDiffSaid > 0)
                {
                    sbReturnDiff = sbReturnDiff.Append("и еще " + RFMUtilities.Declen(nReturnDiff - nReturnDiffSaid, "товара", "товаров", "товаров") + "\n");
                }

                /*
                 * if (RFMMessage.MessageBoxYesNo("Для следующих товаров:\n" + sbReturnDiff + "доставленное количество не равно отгруженному и\n" +
                 *      "и не указана причина возврата.\n\n" +
                 *      "Все-таки подтвердить доставку заказа?") == DialogResult.No)
                 *      return;
                 */
                RFMMessage.MessageBoxError("Для следующих товаров:\n" + sbReturnDiff + "доставленное количество не равно отгруженному и\n" +
                                           "и не указана причина несоответствия отгруженного и доставленного количества.\n\n" +
                                           "Подтверждение доставки заказа не выполняется!");

                if (nReturnFirstID >= 0)
                {
                    int nGridPosition = ((RFMBindingSource)dgvOutputsDocumentsGoods.GridSource).Find("ID", nReturnFirstID);
                    if (nGridPosition >= 0)
                    {
                        dgvOutputsDocumentsGoods.GridSource.Position = nGridPosition;
                    }
                }
                return;
            }

            /*
             * // по кол-ву денег
             * if (numGetMoneyWished.Value != numGetMoneyConfirmed.Value)
             * {
             *      if (RFMMessage.MessageBoxYesNo("Не совпадает сумма:\n" +
             *              "ожидаемая (" + numGetMoneyWished.Value.ToString("### ### ##0.00").Trim() + ") и полученная (" + numGetMoneyConfirmed.Value.ToString("### ### ##0.00").Trim() + ").\n\n" +
             *              "Все-таки подтвердить доставку заказа?") == DialogResult.No)
             *              return;
             * }
             * if (numGetMoneyWished.Value != 0 && numGetMoneyConfirmed.Value == 0 &&
             *      !chkIsWarrantReturned.Checked)
             * {
             *      if (RFMMessage.MessageBoxYesNo("Не указана полученная сумма,\n" +
             *              "не указано также, что доверенность возвращена.\n\n" +
             *              "Все-таки подтвердить?") == DialogResult.No)
             *              return;
             * }
             * if (numGetMoneyConfirmed.Value != 0 &&
             *      chkIsWarrantReturned.Checked)
             * {
             *      if (RFMMessage.MessageBoxYesNo("Указана полученная сумма,\n" +
             *              "указано также, что доверенность возвращена.\n\n" +
             *              "Все-таки подтвердить?") == DialogResult.No)
             *              return;
             * }
             */

            // по паллетам
            if (numGetPalletsQntWished.Value != numGetPalletsQntConfirmed.Value)
            {
                if (RFMMessage.MessageBoxYesNo("Не совпадает количество паллет:\n" +
                                               "ожидаемое (" + numGetPalletsQntWished.Value.ToString("#####0").Trim() + ") и полученное (" + numGetPalletsQntConfirmed.Value.ToString("#####0").Trim() + ").\n\n" +
                                               "Все-таки подтвердить доставку заказа?") == DialogResult.No)
                {
                    return;
                }
            }

            // добрались. уже сохраняем

            if (true)             // (RFMMessage.MessageBoxYesNo("Подтвердить доставку заказа получателю?") == DialogResult.Yes)
            {
                oOutputDocument.NoteExecute = txtNoteExecute.Text.Trim();
                oOutputDocument.DocumentsOK = chkDocumentsOK.Checked;

                /*
                 * oOutputDocument.GetMoneyConfirmed = numGetMoneyConfirmed.Value;
                 * oOutputDocument.IsWarrantReturned = chkIsWarrantReturned.Checked;
                 */
                oOutputDocument.GetPalletsQntConfirmed = (int)numGetPalletsQntConfirmed.Value;

                // добрались. сохраняем.
                Refresh();
                WaitOn(this);
                oOutputDocument.ClearError();
                bool bResult = oOutputDocument.Bring(((RFMFormBase)Application.OpenForms[0]).UserInfo.UserID);
                WaitOff(this);
                if (bResult && oOutputDocument.ErrorNumber == 0)
                {
                    //RFMMessage.MessageBoxInfo("Зарегистрирована доставка заказа получателю.");
                    DialogResult = DialogResult.Yes;
                    Dispose();
                }
            }
        }
Пример #4
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (cboStoresZones.SelectedValue == null || cboStoresZones.SelectedIndex < 0)
            {
                RFMMessage.MessageBoxError("Не указана складская зона...");
                return;
            }
            int nStoreZoneID = (int)cboStoresZones.SelectedValue;

            string sCBuilding = txtCBuilding.Text.Trim();
            string sCLine     = txtCLine.Text.Trim();
            string sCRackBeg  = txtCRackBeg.Text.Trim();
            string sCRackEnd  = txtCRackEnd.Text.Trim();
            string sCLevelBeg = txtCLevelBeg.Text.Trim();
            string sCLevelEnd = txtCLevelEnd.Text.Trim();
            string sCPlaceBeg = txtCPlaceBeg.Text.Trim();
            string sCPlaceEnd = txtCPlaceEnd.Text.Trim();

            if ((nBuildingLen > 0 && sCBuilding.Length != nBuildingLen) ||
                (nLineLen > 0 && sCLine.Length != nLineLen) ||
                (nRackLen > 0 && (sCRackBeg.Length != nRackLen || sCRackEnd.Length != nRackLen)) ||
                (nLevelLen > 0 && (sCLevelBeg.Length != nLevelLen || sCLevelEnd.Length != nLevelLen)) ||
                (nPlaceLen > 0 && (sCPlaceBeg.Length != nPlaceLen || sCPlaceEnd.Length != nPlaceLen)))
            {
                RFMMessage.MessageBoxError("Неверное указание составляющих адреса...");
                return;
            }

            if (nRackLen > 0)
            {
                if (sCRackBeg.Length != sCRackEnd.Length || sCRackBeg.CompareTo(sCRackEnd) > 0)
                {
                    RFMMessage.MessageBoxError("Неверное указание начального и конечного стояка...");
                    return;
                }
            }

            if (nLevelLen > 0)
            {
                if (sCLevelBeg.Length != sCLevelEnd.Length || sCLevelBeg.CompareTo(sCLevelEnd) > 0)
                {
                    RFMMessage.MessageBoxError("Неверное указание начального и конечного уровня...");
                    return;
                }
            }

            if (nPlaceLen > 0)
            {
                if (sCPlaceBeg.Length != sCPlaceEnd.Length || sCPlaceBeg.CompareTo(sCPlaceEnd) > 0)
                {
                    RFMMessage.MessageBoxError("Неверное указание начального и конечного паллетоместа...");
                    return;
                }
            }

            // здание, линия (буквы), стояк, уровень, место - по маске
            string sEmpty = "";

            if (nBuildingLen > 0)
            {
                if (sCBuilding.Length != nBuildingLen)
                {
                    RFMMessage.MessageBoxError("Неверное указание здания (" + RFMUtilities.Declen(nBuildingLen, "символ", "символа", "символа") + ")...");
                    return;
                }
            }

            char cA = Convert.ToChar("A");
            char cZ = Convert.ToChar("Z");
            char c0 = Convert.ToChar("0");
            char c9 = Convert.ToChar("9");

            if (nLineLen > 0)
            {
                if (sCLine.Length != nLineLen ||
                    (sEmpty.PadRight(nLineLen, cA)).CompareTo(sCLine) > 0 ||
                    sCLine.CompareTo(sEmpty.PadRight(nLineLen, cZ)) > 0)
                {
                    RFMMessage.MessageBoxError("Неверное указание линии (" + RFMUtilities.Declen(nLineLen, "латинская заглавная буква", "литанские заглавные буквы", "латинских заглавных букв") + ")...");
                    return;
                }
            }

            Int16 nX;

            if (nRackLen > 0)
            {
                if (sCRackBeg.Length != nRackLen ||
                    !Int16.TryParse(sCRackBeg, out nX) ||
                    nX < 1 ||
                    nX > Convert.ToInt16(sEmpty.PadRight(nRackLen, c9)))
                {
                    RFMMessage.MessageBoxError("Неверное указание начального стояка (" + nRackLen.ToString().Trim() + "-значное число: " +
                                               (sEmpty.PadRight(nRackLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nRackLen, c9)) + ")...");
                    return;
                }
                if (sCRackEnd.Length != nRackLen ||
                    !Int16.TryParse(sCRackEnd, out nX) ||
                    nX < 1 ||
                    nX > Convert.ToInt16(sEmpty.PadRight(nRackLen, c9)))
                {
                    RFMMessage.MessageBoxError("Неверное указание конечного стояка (" + nRackLen.ToString().Trim() + "-значное число: " +
                                               (sEmpty.PadRight(nRackLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nRackLen, c9)) + ")...");
                    return;
                }
            }

            if (nLevelLen > 0)
            {
                if (sCLevelBeg.Length != nLevelLen ||
                    !Int16.TryParse(sCLevelBeg, out nX) ||
                    nX < 1 ||
                    nX > Convert.ToInt16(sEmpty.PadRight(nLevelLen, c9)))
                {
                    RFMMessage.MessageBoxError("Неверное указание начального уровня (" + nLevelLen.ToString().Trim() + "-значное число: " +
                                               (sEmpty.PadRight(nLevelLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nLevelLen, c9)) + ")...");
                    return;
                }
                if (sCLevelEnd.Length != nLevelLen ||
                    !Int16.TryParse(sCLevelEnd, out nX) ||
                    nX < 1 ||
                    nX > Convert.ToInt16(sEmpty.PadRight(nLevelLen, c9)))
                {
                    RFMMessage.MessageBoxError("Неверное указание конечного уровня (" + nLevelLen.ToString().Trim() + "-значное число: " +
                                               (sEmpty.PadRight(nLevelLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nLevelLen, c9)) + ")...");
                    return;
                }
            }

            if (nPlaceLen > 0)
            {
                if (sCPlaceBeg.Length != nPlaceLen ||
                    !Int16.TryParse(sCPlaceBeg, out nX) ||
                    nX < 1 ||
                    nX > Convert.ToInt16(sEmpty.PadRight(nPlaceLen, c9)))
                {
                    RFMMessage.MessageBoxError("Неверное указание начальной ячейки (паллетоместа) на уровне (" + nPlaceLen.ToString().Trim() + "-значное число: " +
                                               (sEmpty.PadRight(nPlaceLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nPlaceLen, c9)) + ")...");
                    return;
                }
                if (sCPlaceEnd.Length != nPlaceLen ||
                    !Int16.TryParse(sCPlaceEnd, out nX) ||
                    nX < 1 ||
                    nX > Convert.ToInt16(sEmpty.PadRight(nPlaceLen, c9)))
                {
                    RFMMessage.MessageBoxError("Неверное указание конечной ячейки (паллетоместа) на уровне (" + nPlaceLen.ToString().Trim() + "-значное число: " +
                                               (sEmpty.PadRight(nPlaceLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nPlaceLen, c9)) + ")...");
                    return;
                }
            }

            bool bAddThrough  = chkAddThrough.Checked;
            bool bAddHoleLine = chkAddHoleLine.Checked;
            bool bAddHole     = chkAddHole.Checked;

            oCell.ClearError();

            if (RFMMessage.MessageBoxYesNo("Выполняется попытка добавления ячеек: \n" +
                                           ((nBuildingLen > 0) ? ("Здание: " + sCBuilding + "\n") : "") +
                                           ((nLineLen > 0) ? ("Линия: " + sCLine + "\n") : "") +
                                           ((nRackLen > 0) ? ("Стояк: c " + sCRackBeg + " по " + sCRackEnd + "\n") : "") +
                                           ((nLevelLen > 0) ? ("Уровень: c " + sCLevelBeg + " по " + sCLevelEnd + "\n") : "") +
                                           ((nPlaceLen > 0) ? ("Паллетоместо: c " + sCPlaceBeg + " по " + sCPlaceEnd + "\n") : "") +
                                           "\n" +
                                           "Продолжить?") == DialogResult.Yes)
            {
                int nCnt = oCell.AddRange("TEST",
                                          sCBuilding, sCLine,
                                          sCRackBeg, sCRackEnd,
                                          sCLevelBeg, sCLevelEnd,
                                          sCPlaceBeg, sCPlaceEnd,
                                          nStoreZoneID,
                                          bAddThrough, bAddHoleLine, bAddHole);
                if (oCell.ErrorNumber == 0)
                {
                    if (nCnt > 0)
                    {
                        if (RFMMessage.MessageBoxYesNo("Можно добавить " + RFMUtilities.Declen(nCnt, "ячейку", "ячейки", "ячеек") + ".\n" +
                                                       "Выполнить добавление?") == DialogResult.Yes)
                        {
                            nCnt = oCell.AddRange("ADD",
                                                  sCBuilding, sCLine,
                                                  sCRackBeg, sCRackEnd,
                                                  sCLevelBeg, sCLevelEnd,
                                                  sCPlaceBeg, sCPlaceEnd,
                                                  nStoreZoneID,
                                                  bAddThrough, bAddHoleLine, bAddHole);
                            if (oCell.ErrorNumber == 0)
                            {
                                if (nCnt > 0)
                                {
                                    RFMMessage.MessageBoxInfo("Добавлено " + RFMUtilities.Declen(nCnt, "ячейка", "ячейки", "ячеек") + ".");
                                    RFMMessage.MessageBoxInfo("Не забудьте добавить и назначить буферную ячейку\n" + "для добавленных ячеек.");
                                }
                                else
                                {
                                    RFMMessage.MessageBoxInfo("Ячейки не были добавлены...");
                                }
                            }
                        }
                    }
                    else
                    {
                        RFMMessage.MessageBoxError("Ячейки не могут быть добавлены...");
                    }
                }

                if (oCell.ErrorNumber == 0 && nCnt > 0)
                {
                    DialogResult = DialogResult.Yes;
                    Dispose();
                }
            }
        }
Пример #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 btnSave_Click(object sender, EventArgs e)
        {
            if (grdData.DataSource == null || oCCS.TablePrepareInventoryAct.Rows.Count == 0)
            {
                return;
            }

            int nMarkedRowsCount = grdData.GetMarkedRows();

            if (nMarkedRowsCount == 0)
            {
                RFMMessage.MessageBoxError("Не отмечено ни одной записи!");
                return;
            }

            // Замена для пустого владельца
            int?   nEmptyOwnerID   = (int?)cboOwners.SelectedValue;
            string sEmptyOwnerName = (cboOwners.Text.Length > 0 ? cboOwners.Text : "");

            // Копирование выбранных записей во временную отсортированную таблицу
            DataTable sortedTable = CopyTable(oCCS.TablePrepareInventoryAct,
                                              "GoodsForAct",
                                              "Qnt <> 0 AND IsMarked = true",
                                              "HostName, OwnerName, GoodStateName, GoodGroupName, GoodName");

            if (sortedTable.Rows.Count == 0)
            {
                RFMMessage.MessageBoxError("Нечего сохранять!");
                return;
            }

            // Подсчет количества создаваемых актов и проверка на пустых владельцев
            List <string> combinations = new List <string>();
            List <string> emptyHosts = new List <string>();
            string        sHostName, sOwnerName, sGoodStateName, sCombination;

            foreach (DataRow r in sortedTable.Rows)
            {
                sHostName      = r["HostName"].ToString();
                sOwnerName     = r["OwnerName"].ToString();
                sGoodStateName = r["GoodStateName"].ToString();
                sCombination   = sHostName + "$" + (sOwnerName.Length > 0 ? sOwnerName : sEmptyOwnerName) + "$" + sGoodStateName;

                if (!combinations.Contains(sCombination))
                {
                    // Добавление нового сочетания параметров акта
                    combinations.Add(sCombination);

                    // Добавление в список нового хоста для пустого владельца
                    if (sOwnerName.Length == 0)
                    {
                        if (!emptyHosts.Contains(sHostName))
                        {
                            emptyHosts.Add(sHostName);
                        }
                    }
                }
            }

            // Проверки допустимости сохранения данных
            if (emptyHosts.Count > 1)
            {
                RFMMessage.MessageBoxError("Обнаружено несколько хостов с пустым владельцем!\r\nСохранение невозможно!");
                return;
            }
            else if (emptyHosts.Count == 1 && !nEmptyOwnerID.HasValue)
            {
                RFMMessage.MessageBoxError("Не выбрана замена для актов с пустым владельцем!\r\nСохранение невозможно!");
                return;
            }

            // Последнее китайское предупреждение
            if (RFMMessage.MessageBoxYesNo("Создать " + RFMUtilities.Declen(combinations.Count, "акт", "акта", "актов") +
                                           "?\r\nВнимание, данная операция необратима!") != DialogResult.Yes)
            {
                return;
            }

            // Замена пустого владельца
            if (emptyHosts.Count > 0)
            {
                foreach (DataRow r in sortedTable.Rows)
                {
                    if (r["OwnerName"].ToString().Length == 0)
                    {
                        r["OwnerID"] = nEmptyOwnerID;
                    }
                }
            }

            // Сохранение актов
            System.IO.StringWriter writer = new System.IO.StringWriter();
            sortedTable.WriteXml(writer);

            this.Cursor = Cursors.WaitCursor;
            bool bResult = oCCS.SaveInventoryAct(snapshotID, writer.ToString(), sortedTable.TableName);

            this.Cursor = null;

            if (!bResult)
            {
                RFMMessage.MessageBoxError(oCCS.ErrorStr);
                return;
            }

            this.Close();
        }
Пример #7
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            DataRow rx = oCell.MainTable.Rows[0];

            if (cboStoresZones.SelectedValue == null || cboStoresZones.SelectedIndex < 0)
            {
                RFMMessage.MessageBoxError("Ќе указана складска¤ зона...");
                return;
            }
            int nStoreZoneID = (int)cboStoresZones.SelectedValue;

            string sAddress = txtAddress.Text.Trim();

            if (sAddress.Length == 0)
            {
                RFMMessage.MessageBoxError("Ќе указан адрес ¤чейки...");
                return;
            }

            // длина адреса
            if (sAddress.Length > nAddressLen)
            {
                RFMMessage.MessageBoxError("—лишком длинный адрес ¤чейки...");
                return;
            }

            // допустимые символы (дл¤ печати штрих-кода)
            string cCharsAvailable =
                "0123456789" +
                ".:-=" +
                "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
                "abcdefghijklmnopqrstuvwxyz";

            for (int i = 0; i < sAddress.Length; i++)
            {
                string c = sAddress.Substring(i, 1);
                if (!cCharsAvailable.Contains(c))
                {
                    RFMMessage.MessageBoxError("Ќеверный символ в адресе ¤чейки: " + c + "\nƒл¤ адреса опустимы только латинские буквы и цифры.");
                    return;
                }
            }

            // не исправили ли руками префикс-суффикс
            if (sStoreZonePrefix.Length > 0 && sAddress.Substring(0, sStoreZonePrefix.Length) != sStoreZonePrefix)
            {
                RFMMessage.MessageBoxError("Ќеверное начало адреса ¤чейки.\nƒолжно быть: " + sStoreZonePrefix);
                return;
            }
            if (sStoreZoneSuffix.Length > 0 && sAddress.Substring(sAddress.Length - sStoreZoneSuffix.Length) != sStoreZoneSuffix)
            {
                RFMMessage.MessageBoxError("Ќеверное окончание адреса ¤чейки.\nƒолжно быть: " + sStoreZoneSuffix);
                return;
            }

            string sCBuilding = txtCBuilding.Text.Trim();
            string sCLine     = txtCLine.Text.Trim();
            string sCRack     = txtCRack.Text.Trim();
            string sCLevel    = txtCLevel.Text.Trim();
            string sCPlace    = txtCPlace.Text.Trim();

            if (sCBuilding.Length == 0 &&
                sCLine.Length == 0 &&
                sCRack.Length == 0 &&
                sCLevel.Length == 0 &&
                sCPlace.Length == 0)
            {
                if (RFMMessage.MessageBoxYesNo("Ќе указана ни одна составл¤юща¤ адреса...\n¬се-таки сохранить?") != DialogResult.Yes)
                {
                    return;
                }
            }

            if (sAddressMask.Length > 0)
            {
                // указаны ли все нужные составл¤ющие адреса и кака¤ у них длина?
                if ((nBuildingLen > 0 && sCBuilding.Length != nBuildingLen) ||
                    (nLineLen > 0 && sCLine.Length != nLineLen) ||
                    (nRackLen > 0 && sCRack.Length != nRackLen) ||
                    (nLevelLen > 0 && sCLevel.Length != nLevelLen) ||
                    (nPlaceLen > 0 && sCPlace.Length != nPlaceLen))
                {
                    RFMMessage.MessageBoxError("Ќеверное указание составл¤ющих адреса...");
                    return;
                }

                // здание, лини¤ (буквы), сто¤к, уровень, место - по маске
                string sEmpty = "";
                if (nBuildingLen > 0)
                {
                    if (sCBuilding.Length != nBuildingLen)
                    {
                        RFMMessage.MessageBoxError("Ќеверное указание здани¤ (" + RFMUtilities.Declen(nBuildingLen, "символ", "символа", "символа") + ")...");
                        return;
                    }
                }

                char cA = Convert.ToChar("A");
                char cZ = Convert.ToChar("Z");
                char c0 = Convert.ToChar("0");
                char c9 = Convert.ToChar("9");

                if (nLineLen > 0)
                {
                    if (sCLine.Length != nLineLen ||
                        (sEmpty.PadRight(nLineLen, cA)).CompareTo(sCLine) > 0 ||
                        sCLine.CompareTo(sEmpty.PadRight(nLineLen, cZ)) > 0)
                    {
                        RFMMessage.MessageBoxError("Ќеверное указание линии (" + RFMUtilities.Declen(nLineLen, "латинска¤ заглавна¤ буква", "литанские заглавные буквы", "латинских заглавных букв") + ")...");
                        return;
                    }
                }

                Int16 nX;
                if (nRackLen > 0)
                {
                    if (sCRack.Length != nRackLen ||
                        !Int16.TryParse(sCRack, out nX) ||
                        nX < 1 ||
                        nX > Convert.ToInt16(sEmpty.PadRight(nRackLen, c9)))
                    {
                        RFMMessage.MessageBoxError("Ќеверное указание сто¤ка (" + nRackLen.ToString().Trim() + "-значное число: " +
                                                   (sEmpty.PadRight(nRackLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nRackLen, c9)) + ")...");
                        return;
                    }
                }

                if (nLevelLen > 0)
                {
                    if (sCLevel.Length != nLevelLen ||
                        !Int16.TryParse(sCLevel, out nX) ||
                        nX < 1 ||
                        nX > Convert.ToInt16(sEmpty.PadRight(nLevelLen, c9)))
                    {
                        RFMMessage.MessageBoxError("Ќеверное указание уровн¤ (" + nLevelLen.ToString().Trim() + "-значное число: " +
                                                   (sEmpty.PadRight(nLevelLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nLevelLen, c9)) + ")...");
                        return;
                    }
                }

                if (nPlaceLen > 0)
                {
                    if (sCPlace.Length != nPlaceLen ||
                        !Int16.TryParse(sCPlace, out nX) ||
                        nX < 1 ||
                        nX > Convert.ToInt16(sEmpty.PadRight(nPlaceLen, c9)))
                    {
                        RFMMessage.MessageBoxError("Ќеверное указание ¤чейки (паллетоместа) на уровне (" + nPlaceLen.ToString().Trim() + "-значное число: " +
                                                   (sEmpty.PadRight(nPlaceLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nPlaceLen, c9)) + ")...");
                        return;
                    }
                }
            }

            // * собственно сохранение *
            oCell.ClearError();

            rx["StoreZoneID"] = nStoreZoneID;
            rx["Address"]     = sAddress;
            rx["CBuilding"]   = sCBuilding;
            rx["CLine"]       = sCLine;
            rx["CRack"]       = sCRack;
            rx["CLevel"]      = sCLevel;
            rx["CPlace"]      = sCPlace;

            oCell.AddressSave((int)rx["ID"]);

            if (oCell.ErrorNumber == 0)
            {
                DialogResult = DialogResult.Yes;
                Dispose();
            }
        }
Пример #8
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (cboStoresZones.SelectedValue == null || cboStoresZones.SelectedIndex < 0)
            {
                RFMMessage.MessageBoxError("Не указана складская зона...");
                return;
            }
            int nStoreZoneID = (int)cboStoresZones.SelectedValue;

            string sAddress = txtAddress.Text.Trim();

            if (sAddress.Length == 0)
            {
                RFMMessage.MessageBoxError("Не указан адрес ячейки...");
                return;
            }

            // длина адреса
            if (sAddress.Length > nAddressLen)
            {
                RFMMessage.MessageBoxError("Слишком длинный адрес ячейки...");
                return;
            }

            // допустимые символы (для печати штрих-кода)
            string cCharsAvailable =
                "0123456789" +
                ".:-=" +
                "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
                "abcdefghijklmnopqrstuvwxyz";

            for (int i = 0; i < sAddress.Length; i++)
            {
                string c = sAddress.Substring(i, 1);
                if (!cCharsAvailable.Contains(c))
                {
                    RFMMessage.MessageBoxError("Неверный символ в адресе ячейки: " + c + "\nДля адреса опустимы только латинские буквы и цифры.");
                    return;
                }
            }

            // не исправили ли руками префикс-суффикс
            if (sStoreZonePrefix.Length > 0 && sAddress.Substring(0, sStoreZonePrefix.Length) != sStoreZonePrefix)
            {
                RFMMessage.MessageBoxError("Неверное начало адреса ячейки.\nДолжно быть: " + sStoreZonePrefix);
                return;
            }
            if (sStoreZoneSuffix.Length > 0 && sAddress.Substring(sAddress.Length - sStoreZoneSuffix.Length) != sStoreZoneSuffix)
            {
                RFMMessage.MessageBoxError("Неверное окончание адреса ячейки.\nДолжно быть: " + sStoreZoneSuffix);
                return;
            }

            string sCBuilding = txtCBuilding.Text.Trim();
            string sCLine     = txtCLine.Text.Trim();
            string sCRack     = txtCRack.Text.Trim();
            string sCLevel    = txtCLevel.Text.Trim();
            string sCPlace    = txtCPlace.Text.Trim();

            if (sCBuilding.Length == 0 &&
                sCLine.Length == 0 &&
                sCRack.Length == 0 &&
                sCLevel.Length == 0 &&
                sCPlace.Length == 0)
            {
                if (RFMMessage.MessageBoxYesNo("Не указана ни одна составляющая адреса...\nВсе-таки сохранить?") != DialogResult.Yes)
                {
                    return;
                }
            }

            if (sAddressMask.Length > 0 & chkAddressManual.Checked == false)
            {
                // указаны ли все нужные составляющие адреса и какая у них длина?
                if ((nBuildingLen > 0 && sCBuilding.Length != nBuildingLen) ||
                    (nLineLen > 0 && sCLine.Length != nLineLen) ||
                    (nRackLen > 0 && sCRack.Length != nRackLen) ||
                    (nLevelLen > 0 && sCLevel.Length != nLevelLen) ||
                    (nPlaceLen > 0 && sCPlace.Length != nPlaceLen))
                {
                    RFMMessage.MessageBoxError("Неверное указание составляющих адреса...");
                    return;
                }

                // здание, линия (буквы), стояк, уровень, место - по маске
                string sEmpty = "";
                if (nBuildingLen > 0)
                {
                    if (sCBuilding.Length != nBuildingLen)
                    {
                        RFMMessage.MessageBoxError("Неверное указание здания (" + RFMUtilities.Declen(nBuildingLen, "символ", "символа", "символа") + ")...");
                        return;
                    }
                }

                char cA = Convert.ToChar("A");
                char cZ = Convert.ToChar("Z");
                char c0 = Convert.ToChar("0");
                char c9 = Convert.ToChar("9");

                if (nLineLen > 0)
                {
                    if (sCLine.Length != nLineLen ||
                        (sEmpty.PadRight(nLineLen, cA)).CompareTo(sCLine) > 0 ||
                        sCLine.CompareTo(sEmpty.PadRight(nLineLen, cZ)) > 0)
                    {
                        RFMMessage.MessageBoxError("Неверное указание линии (" + RFMUtilities.Declen(nLineLen, "латинская заглавная буква", "литанские заглавные буквы", "латинских заглавных букв") + ")...");
                        return;
                    }
                }

                Int16 nX;
                if (nRackLen > 0)
                {
                    if (sCRack.Length != nRackLen ||
                        !Int16.TryParse(sCRack, out nX) ||
                        nX < 1 ||
                        nX > Convert.ToInt16(sEmpty.PadRight(nRackLen, c9)))
                    {
                        RFMMessage.MessageBoxError("Неверное указание стояка (" + nRackLen.ToString().Trim() + "-значное число: " +
                                                   (sEmpty.PadRight(nRackLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nRackLen, c9)) + ")...");
                        return;
                    }
                }

                if (nLevelLen > 0)
                {
                    if (sCLevel.Length != nLevelLen ||
                        !Int16.TryParse(sCLevel, out nX) ||
                        nX < 1 ||
                        nX > Convert.ToInt16(sEmpty.PadRight(nLevelLen, c9)))
                    {
                        RFMMessage.MessageBoxError("Неверное указание уровня (" + nLevelLen.ToString().Trim() + "-значное число: " +
                                                   (sEmpty.PadRight(nLevelLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nLevelLen, c9)) + ")...");
                        return;
                    }
                }

                if (nPlaceLen > 0)
                {
                    if (sCPlace.Length != nPlaceLen ||
                        !Int16.TryParse(sCPlace, out nX) ||
                        nX < 1 ||
                        nX > Convert.ToInt16(sEmpty.PadRight(nPlaceLen, c9)))
                    {
                        RFMMessage.MessageBoxError("Неверное указание ячейки (паллетоместа) на уровне (" + nPlaceLen.ToString().Trim() + "-значное число: " +
                                                   (sEmpty.PadRight(nPlaceLen - 1, c0)) + "1" + ".." + (sEmpty.PadRight(nPlaceLen, c9)) + ")...");
                        return;
                    }
                }
            }
            else if (txtAddress.Text.Length == 0)
            {
                RFMMessage.MessageBoxError("Адрес ячейки не может быть пустым...");
                return;
            }

            // * собственно сохранение *
            oCell.ClearError();
            int nCellID = oCell.AddSpecial(sAddress, sCBuilding, sCLine, sCRack, sCLevel, sCPlace, nStoreZoneID);

            if (oCell.ErrorNumber == 0)
            {
                MotherForm.GotParam = new object[] { nCellID };
                DialogResult        = DialogResult.Yes;
                Dispose();
            }
        }
Пример #9
0
        private void grdCells_Restore()
        {
            WaitOn(this);

            oCells.ClearFilters();
            oCells.ID     = null;
            oCells.IDList = null;

            // собираем услови¤
            oCells.FilterActual = true;
            // выбранные ¤чейки
            if (sSelectedCellsIDList.Length > 0)
            {
                oCells.IDList = sSelectedCellsIDList;
            }
            // выбранные товары -  в ¤чейках
            if (sSelectedPackingsIDList.Length > 0)
            {
                oCells.CellsContents_FilterPackingsList = sSelectedPackingsIDList;
            }
            // срок годности
            if (chkDateValidPercent.Checked)
            {
                oCells.CellsContents_FilterCheckDateValid = Convert.ToInt32(numDateValidPercent.Value);
            }

            grdCells.DataSource = null;
            oCells.FillData();
            if (oCells.MainTable.Columns["InFilter"] == null)
            {
                oCells.MainTable.Columns.Add("InFilter", Type.GetType("System.Boolean"));
            }
            if (chkShowContents.Checked)
            {
                if (oCells.MainTable.Columns["GoodAlias"] == null)
                {
                    oCells.MainTable.Columns.Add("GoodAlias", Type.GetType("System.String"));
                }
                if (oCells.MainTable.Columns["Weighting"] == null)
                {
                    oCells.MainTable.Columns.Add("Weighting", Type.GetType("System.Boolean"));
                }
                if (oCells.MainTable.Columns["InBox"] == null)
                {
                    oCells.MainTable.Columns.Add("InBox", Type.GetType("System.Decimal"));
                }
                if (oCells.MainTable.Columns["Qnt"] == null)
                {
                    oCells.MainTable.Columns.Add("Qnt", Type.GetType("System.Decimal"));
                }
                if (oCells.MainTable.Columns["Boxes"] == null)
                {
                    oCells.MainTable.Columns.Add("Boxes", Type.GetType("System.Decimal"));
                }
                if (oCells.MainTable.Columns["DateValid"] == null)
                {
                    oCells.MainTable.Columns.Add("DateValid", Type.GetType("System.DateTime"));
                }
            }

            // остаток кор.
            if (chkRestBoxes.Checked || chkShowContents.Checked || sSelectedPackingsIDList.Length > 0)
            {
                decimal nRestBoxes = numRestBoxes.Value;
                Cell    oCellTemp  = new Cell();
                foreach (DataRow r in oCells.MainTable.Rows)
                {
                    // ¤чейки хранени¤
                    if (chkForStorageOnly.Checked && !Convert.ToBoolean(r["ForStorage"]))
                    {
                        continue;
                    }

                    oCellTemp.ID = Convert.ToInt32(r["ID"]);
                    oCellTemp.FillTableCellsContents(oCellTemp.ID, false);
                    if (oCellTemp.TableCellsContents.Columns["InFilter"] == null)
                    {
                        oCellTemp.TableCellsContents.Columns.Add("InFilter", Type.GetType("System.Boolean"));
                    }
                    if (oCellTemp.TableCellsContents.Rows.Count > 0)
                    {
                        // есть еще другие товары в ¤чейке
                        // оставить только те, которые в пределах фильтра
                        foreach (DataRow rcc in oCellTemp.TableCellsContents.Rows)
                        {
                            rcc["InFilter"] = true;
                            if (sSelectedPackingsIDList.Length > 0 &&
                                !sSelectedPackingsIDList.Contains("," + rcc["PackingID"].ToString() + ","))
                            {
                                rcc["InFilter"] = false;
                            }
                            if (chkRestBoxes.Checked &&
                                Convert.ToDecimal(rcc["BoxQnt"]) > Convert.ToDecimal(numRestBoxes.Value))
                            {
                                rcc["InFilter"] = false;
                            }
                            if (chkDateValidPercent.Checked &&
                                !Convert.IsDBNull(rcc["DateValid"]) &&
                                Convert.ToDecimal(rcc["DateValidPercent"]) > Convert.ToDecimal(numDateValidPercent.Value))
                            {
                                rcc["InFilter"] = false;
                            }
                        }
                        DataTable dcc = CopyTable(oCellTemp.TableCellsContents, "dcc", "InFilter = true", "");
                        if (dcc.Rows.Count > 0)
                        {
                            DataRow rcc = dcc.Rows[0];
                            r["InFilter"] = true;
                            if (chkShowContents.Checked)
                            {
                                if (dcc.Rows.Count > 1)
                                {
                                    r["GoodAlias"] = RFMUtilities.Declen(dcc.Rows.Count, "товар", "товара", "товаров");
                                }
                                else
                                {
                                    r["GoodAlias"] = rcc["GoodAlias"];
                                    r["Weighting"] = rcc["Weighting"];
                                    r["InBox"]     = rcc["InBox"];
                                    r["Qnt"]       = rcc["Qnt"];
                                    r["Boxes"]     = Convert.ToDecimal(rcc["Qnt"]) / Convert.ToDecimal(rcc["InBox"]);
                                    r["DateValid"] = rcc["DateValid"];
                                }
                            }
                        }
                    }
                }
            }

            //grdCells.Restore(CopyTable(oCells.MainTable, "dt", ((chkDateValidPercent.Checked || chkRestBoxes.Checked || sSelectedPackingsIDList.Length > 0) ? "InFilter" : ""), "StoreZoneName, Address"));
            string sFilter = "";

            if (chkDateValidPercent.Checked || chkRestBoxes.Checked || sSelectedPackingsIDList.Length > 0)
            {
                sFilter = "InFilter";
            }
            if (chkForStorageOnly.Checked)
            {
                if (sFilter.Length == 0)
                {
                    sFilter = "ForStorage";
                }
                else
                {
                    sFilter += " and ForStorage";
                }
            }

            if (dt == null)
            {
                dt            = CopyTable(oCells.MainTable, "dt", sFilter, "StoreZoneName, Address");
                dt.PrimaryKey = new DataColumn[] { dt.Columns["CellID"] };
            }
            else
            {
                //dt.Merge(CopyTable(oCells.MainTable, "dt", ((chkDateValidPercent.Checked || chkRestBoxes.Checked || sSelectedPackingsIDList.Length > 0) ? "InFilter" : ""), "StoreZoneName, Address"));
                DataTable dtX = CopyTable(oCells.MainTable, "dt", sFilter, "StoreZoneName, Address");
                foreach (DataRow rc in dtX.Rows)
                {
                    int nCellID = Convert.ToInt32(rc["CellID"]);
                    if (dt.Rows.Find(nCellID) == null)
                    {
                        dt.ImportRow(rc);
                    }
                }
            }
            grdCells.Restore(dt);
            grdCells.MarkAllRows(true);

            WaitOff(this);
        }
Пример #10
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            int?nCellBufferID;

            if (cboCellAddressBuffer.SelectedValue == null || cboCellAddressBuffer.SelectedIndex < 0)
            {
                if (RFMMessage.MessageBoxYesNo("Ќе выбрана буферна¤ ¤чейка.\nќчистить указание на буферную ¤чейку?") == DialogResult.Yes)
                {
                    nCellBufferID = null;
                }
                else
                {
                    return;
                }
            }
            else
            {
                nCellBufferID = (int)cboCellAddressBuffer.SelectedValue;
            }

            bool bCellBufferUpdate = chkCellsBuffersUpdate.Checked;
            int  nCellID;
            int  nCnt = 0;

            // перебираем строки oCell
            foreach (DataRow r in oCell.MainTable.Rows)
            {
                nCellID = (int)r["ID"];
                oCell.SetBufferCell(nCellID, nCellBufferID, bCellBufferUpdate);
                if (oCell.ErrorNumber == 0)
                {
                    nCnt++;
                }
            }
            if (nCnt > 0)
            {
                RFMMessage.MessageBoxInfo(((nCellBufferID.HasValue) ? "”становлена" : "ќчищена") + " буферна¤ ¤чейка дл¤ " + RFMUtilities.Declen(nCnt, "¤чейки", "¤чеек", "¤чеек") + ".");
            }
            else
            {
                RFMMessage.MessageBoxInfo("Ѕуферна¤ ¤чейка не " + ((nCellBufferID.HasValue) ? "установлена" : "очищена") + "...");
            }

            if (oCell.ErrorNumber == 0 && nCnt > 0)
            {
                DialogResult = DialogResult.Yes;
                Dispose();
            }
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (grdData.DataSource == null || grdData.Rows.Count == 0)
            {
                RFMMessage.MessageBoxError("Не получен список доступных поддонов...");
                return;
            }

            // проверяем отмеченные контейнеры
            int nMarkedCnt = 0;

            foreach (DataRow r in dt.Rows)
            {
                if (!Convert.IsDBNull(r["IsMarked"]) && Convert.ToBoolean(r["IsMarked"]))
                {
                    nMarkedCnt++;
                }
            }
            if (nMarkedCnt == 0)
            {
                RFMMessage.MessageBoxError("Не отмечено ни одного поддона...");
                return;
            }

            if (chkForOutput.Checked)
            {
                // в отгрузку
                if (cboCellOutput.SelectedValue == null || cboCellOutput.SelectedIndex < 0)
                {
                    RFMMessage.MessageBoxError("Не выбрана ячейка отгрузки...");
                    return;
                }

                Cell oCellOutputTemp = new Cell();
                oCellOutputTemp.ID = (int)cboCellOutput.SelectedValue;
                oCellOutputTemp.FillData();
                if (oCellOutputTemp.ErrorNumber != 0 || oCellOutputTemp.MainTable == null || oCellOutputTemp.MainTable.Rows.Count != 1)
                {
                    RFMMessage.MessageBoxError("Ошибка при получении данных о ячейке отгрузки...");
                    return;
                }
                nCellFinishID      = Convert.ToInt32(oCellOutputTemp.MainTable.Rows[0]["ID"]);
                sCellFinishAddress = oCellOutputTemp.MainTable.Rows[0]["Address"].ToString();

                if (RFMMessage.MessageBoxYesNo("Создать операции транспортировки в ячейку отгрузки " + sCellFinishAddress + " для " +
                                               RFMPublic.RFMUtilities.Declen(nMarkedCnt, "поддона", "поддонов", "поддонов") + "?") != DialogResult.Yes)
                {
                    return;
                }
            }
            else
            {
                if (oCellPicking.MainTable == null || oCellPicking.MainTable.Rows.Count == 0)
                {
                    RFMMessage.MessageBoxError("Не определена ячейка пикинга для товара.");
                    return;
                }
                nCellFinishID      = Convert.ToInt32(oCellPicking.MainTable.Rows[0]["ID"]);
                sCellFinishAddress = oCellPicking.MainTable.Rows[0]["Address"].ToString();

                // в пикинг
                if (RFMMessage.MessageBoxYesNo("Создать операции транспортировки в ячейку пикинга " + sCellFinishAddress + " для " +
                                               RFMPublic.RFMUtilities.Declen(nMarkedCnt, "поддона", "поддонов", "поддонов") + "?") != DialogResult.Yes)
                {
                    return;
                }
            }

            // создаем транспортировки последовательно
            int    nFrameID;
            int    nOK   = 0;
            string sNote = txtNoteManual.Text.Trim();

            foreach (DataRow r in dt.Rows)
            {
                if (!Convert.IsDBNull(r["IsMarked"]) && Convert.ToBoolean(r["IsMarked"]))
                {
                    oTraffic.ClearError();
                    nFrameID = Convert.ToInt32(r["FrameID"]);
                    oTraffic.CreateManualDirect(nFrameID, (int)nCellFinishID, nPriority, sNote);
                    if (oTraffic.ErrorNumber == 0)
                    {
                        nOK++;
                    }
                }
            }

            if (nOK > 0)
            {
                RFMMessage.MessageBoxInfo("Создано " + RFMUtilities.Declen(nOK, "задание", "задания", "заданий") + " на транспортировку поддонов в " +
                                          ((chkForOutput.Checked) ? "зону отгрузки" : "пикинг") + ".");
                DialogResult = DialogResult.Yes;
                Dispose();
            }
            else
            {
                RFMMessage.MessageBoxError("Задания на транспортировку поддонов в " + ((chkForOutput.Checked) ? "зону отгрузки" : "пикинг") + " не созданы.");
            }
        }