コード例 #1
0
        private bool dgvActsGoods_Restore()
        {
            dgvActsGoods.GetGridState();
            dgvActsGoods.DataSource = null;
            if (dgvActs.Rows.Count == 0 ||
                !oActCur.ID.HasValue ||
                (dgvActs.CurrentRow != null && dgvActs.IsStatusRow(dgvActs.CurrentRow.Index)))
            {
                return(true);
            }
            oActList.FillTableActsGoods((int)oActCur.ID);

            if (chkShowSelectedGoodsOnly.Enabled && chkShowSelectedGoodsOnly.Checked &&
                ucSelectRecordIDForm_Packings.IsSelectedExist)
            {
                DataTable dt = CopyTable(oActList.TableActsGoods, "dt",
                                         "PackingID in (" + RFMPublic.RFMUtilities.NormalizeList(ucSelectRecordIDForm_Packings.GetIdString()) + ")",
                                         "GoodAlias, ID");
                oActList.TableActsGoods.Clear();
                oActList.TableActsGoods.Merge(dt);
            }

            dgvActsGoods.Restore(oActList.TableActsGoods);
            return(oActList.ErrorNumber == 0);
        }
コード例 #2
0
        private bool dgvActGoods_Restore()
        {
            oAct.ClearError();
            oAct.ID = nActID;
            oAct.FillData();
            if (oAct.ErrorNumber == 0)
            {
                if (nActID != 0)
                {
                    oAct.FillTableActsGoods();
                    if (oAct.ErrorNumber == 0)
                    {
                        oAct.TableActsGoods.PrimaryKey                       = null;
                        oAct.TableActsGoods.Columns["ID"].Unique             = false;
                        oAct.TableActsGoods.Columns["ID"].AllowDBNull        = true;
                        oAct.TableActsGoods.Columns["ActGoodID"].Unique      = false;
                        oAct.TableActsGoods.Columns["ActGoodID"].AllowDBNull = true;
                    }
                }
                else
                {
                    oAct.FillTableActsGoodsFromPut(nInputID, nOutputID);
                    if (oAct.ErrorNumber == 0)
                    {
                        oAct.TableActsGoods.PrimaryKey                       = null;
                        oAct.TableActsGoods.Columns["ID"].Unique             = false;
                        oAct.TableActsGoods.Columns["ID"].AllowDBNull        = true;
                        oAct.TableActsGoods.Columns["ActGoodID"].Unique      = false;
                        oAct.TableActsGoods.Columns["ActGoodID"].AllowDBNull = true;
                    }

                    if (dt != null)
                    {
                        oAct.TableActsGoods.Clear();
                        oAct.TableActsGoods.Merge(dt);
                    }
                }
                decimal nQnt = 0;
                decimal nBox = 0;
                foreach (DataRow droRow in oAct.TableActsGoods.Rows)
                {
                    nQnt += (decimal)droRow["QntConfirmed"];
                    nBox += (decimal)droRow["BoxConfirmed"];
                }
                dgvActGoods.GetGridState();
                dgvActGoods.Restore(oAct.TableActsGoods);
                lblTotalQnt.Text = nQnt.ToString("### ### ##0").Trim();
                lblTotalBox.Text = nBox.ToString("# ### ##0.0").Trim();
            }
            return(oAct.ErrorNumber == 0);
        }
コード例 #3
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (cboOwner.SelectedIndex < 0 || cboOwner.SelectedValue == null)
            {
                RFMMessage.MessageBoxError("Не указан владелец товара...");
                cboOwner.Select();
                return;
            }
            if (cboGoodsState.SelectedIndex < 0 || cboGoodsState.SelectedValue == null)
            {
                RFMMessage.MessageBoxError("Не указано состояние товара...");
                cboGoodsState.Select();
                return;
            }

            bool bActFound = false, bReturnFound = false;

            foreach (DataRow dr in dt.Rows)
            {
                if ((decimal)dr["ActQnt"] != 0)
                {
                    bActFound = true;
                }
                if ((decimal)dr["ReturnQnt"] > 0)
                {
                    bReturnFound = true;
                }
                if (bActFound && bReturnFound)
                {
                    break;
                }
            }
            if (!bActFound && !bReturnFound)
            {
                RFMMessage.MessageBoxError("Ни для одного товара не введено количество ни для актирования, ни для возврата...");
                return;
            }

            // ВОЗВРАТ
            if (bReturnFound)
            {
                if (RFMMessage.MessageBoxYesNo("Сохранить возврат для рейса?") == DialogResult.Yes)
                {
                    // заполним таблицу товаров в возврате
                    oTripReturn.FillTableTripsReturnsGoods(0);
                    if (oTripReturn.ErrorNumber == 0 && oTripReturn.TableTripsReturnsGoods != null)
                    {
                        oTripReturn.TableTripsReturnsGoods.PrimaryKey = null;
                        oTripReturn.TableTripsReturnsGoods.Columns["ID"].AllowDBNull = true;
                        oTripReturn.TableTripsReturnsGoods.Columns["ID"].Unique      = false;

                        oTripReturn.TableTripsReturnsGoods.PrimaryKey = new DataColumn[] { oTripReturn.TableTripsReturnsGoods.Columns["PackingID"] };
                        oTripReturn.TableTripsReturnsGoods.Columns["PackingID"].DefaultValue = 0;

                        foreach (DataRow r in dt.Rows)
                        {
                            if ((decimal)r["ReturnQnt"] > 0)
                            {
                                DataRow rg = oTripReturn.TableTripsReturnsGoods.Rows.Find((int)r["PackingID"]);
                                if (rg == null)
                                {
                                    rg = oTripReturn.TableTripsReturnsGoods.Rows.Add();
                                    rg["PackingID"] = (int)r["PackingID"];
                                    rg["QntWished"] = (decimal)r["ReturnQnt"];
                                }
                                else
                                {
                                    rg["QntWished"] = (decimal)rg["QntWished"] + (decimal)r["ReturnQnt"];
                                }
                            }
                        }
                    }
                    oTripReturn.ClearError();
                    // остальные параметры возврата
                    oTripReturn.ID          = null;
                    oTripReturn.DateReturn  = dtpDate.Value.Date;
                    oTripReturn.GoodStateID = (int)cboGoodsState.SelectedValue;
                    oTripReturn.OwnerID     = (int)cboOwner.SelectedValue;
                    oTripReturn.Note        = txtReturnNote.Text.Trim();
                    oTripReturn.AutoCreated = true;
                    oTripReturn.TripID      = nTripID;
                    oTripReturn.HostID      = nHostID;
                    // сохраняем возврат
                    WaitOn(this);
                    oTripReturn.ClearError();
                    bool bResult = oTripReturn.Save(((RFMFormMain)Application.OpenForms[0]).UserID);
                    WaitOff(this);
                    if (bResult && oTripReturn.ErrorNumber == 0 && oTripReturn.ID.HasValue)
                    {
                        // готов к передаче в WMS
                        if (chkReturnReadyForWMS.Checked)
                        {
                            oTripReturn.SetReadyForWMS((int)oTripReturn.ID);
                            if (oTripReturn.ErrorNumber == 0)
                            {
                                // печать
                                LogService.TripReturnBill_Print(oTripReturn, this);
                            }
                        }
                    }
                }
            }

            // АКТ(Ы)
            if (bActFound)
            {
                // посчитать, сколько получается актов для разных заданий на расход
                DataView dv = new DataView(dt, "ActQnt <> 0", "", DataViewRowState.CurrentRows);
                // таблица кодов заданий на расход, к которым можно приделать акт
                DataTable dtOutput = dv.ToTable(true, "OutputID");

                // Не задаем никаких вопросов
                if (1 == 1)
                //if (RFMMessage.MessageBoxYesNo("Сохранить " + RFMUtilities.Declen(dtOutput.Rows.Count, "акт", "акта", "актов") + " для заданий на расход, прикрепленных к рейсу?") == DialogResult.Yes)
                {
                    // идем по каждому расходу
                    foreach (DataRow o in dtOutput.Rows)
                    {
                        // расход, к которому будет привязан акт
                        int nOutputID = 0;
                        if (!Convert.IsDBNull(o["OutputID"]) && o["OutputID"] != null &&
                            (int)o["OutputID"] > 0)
                        {
                            nOutputID = (int)o["OutputID"];
                        }
                        else
                        {
                            // выберем первый попавшийся из расходов
                            oTrip.FillTableOutputsInTrip();
                            if (oTrip.ErrorNumber == 0 && oTrip.TableOutputsInTrip != null &&
                                oTrip.TableOutputsInTrip.Rows.Count > 0)
                            {
                                nOutputID = (int)oTrip.TableOutputsInTrip.Rows[0]["ID"];
                            }
                        }
                        // заполним таблицу товаров в акте - именно для этого расхода
                        oAct.FillTableActsGoods(0);
                        if (oAct.ErrorNumber == 0 && oAct.TableActsGoods != null)
                        {
                            oAct.TableActsGoods.PrimaryKey = null;
                            oAct.TableActsGoods.Columns["ID"].AllowDBNull = true;
                            oAct.TableActsGoods.Columns["ID"].Unique      = false;

                            foreach (DataRow r in dt.Rows)
                            {
                                // Изменение от 15.05.2017 Александров
                                // Убрана излишняя проверка,
                                // не давала создавать акты при откате оператором ранее подтвержденного расходного документа

                                /*if ((nOutputID == 0 && (Convert.IsDBNull(r["OutputID"]) || r["OutputID"] == null || (int)r["OutputID"] <= 0))
                                ||
                                ||      (nOutputID != 0 && (!Convert.IsDBNull(r["OutputID"]) && r["OutputID"] != null) && (int)r["OutputID"] == nOutputID))
                                || {*/
                                if ((decimal)r["ActQnt"] != 0)
                                {
                                    DataRow ag = oAct.TableActsGoods.Rows.Add();
                                    ag["PackingID"]    = (int)r["PackingID"];
                                    ag["QntConfirmed"] = (decimal)r["ActQnt"];
                                }
                                /*}*/
                            }
                        }
                        oAct.ClearError();
                        // остальные параметры акта
                        oAct.ID          = null;
                        oAct.DateAct     = dtpDate.Value.Date;
                        oAct.GoodStateID = (int)cboGoodsState.SelectedValue;
                        oAct.OwnerID     = (int)cboOwner.SelectedValue;
                        oAct.Note        = txtActNote.Text.Trim();
                        oAct.TripID      = nTripID;
                        if (nOutputID > 0)
                        {
                            oAct.OutputID = nOutputID;
                        }
                        else
                        {
                            oAct.OutputID = null;
                        }
                        oAct.InputID = null;
                        oAct.HostID  = nHostID;

                        // сохраняем акт
                        WaitOn(this);
                        oAct.ClearError();
                        bool bResult = oAct.Save(((RFMFormMain)Application.OpenForms[0]).UserID);
                        WaitOff(this);
                        if (bResult && oAct.ErrorNumber == 0 && oAct.ID.HasValue)
                        {
                            // готов к передаче в WMS
                            if (chkActReadyForWMS.Checked)
                            {
                                //oAct.SetReadyForWMS((int)oAct.ID); // он уже Confirmed
                            }
                        }
                    }
                }
            }

            DialogResult = DialogResult.Yes;
            Dispose();
        }