Ejemplo n.º 1
0
        /*
         * Для получения инфы по командировке UPDTRIP c перв.ключом == pk_UPDTRIP, её редактирования и удаления
         * **/
        public void SetTrip(decimal pkUpdtrip)
        {
            try
            {
                trip = model.UPDTRIP.Find(pkUpdtrip);
                if (trip == null)
                {
                    throw new Exception("Командировки с таким ключом не найдено!");
                }
            }
            catch (Exception except)
            {
                MyMsgBox.showError("Не удалось найти подробную информацию");
                Console.Error.WriteLine(except.Message);
                return;
            }

            SetWorkers(trip.PERSONCARD_IN_TRIP);
            foreach (TRIP_ORG org in trip.TRIP_ORG)
            {
                AddOrgTrip(org);
            }

            if (trip.PRIKAZ != null)
            {
                NumPrikazTextBox.Text = trip.PRIKAZ.NUMDOC;
                DatePrikaz.Value      = trip.PRIKAZ.CREATEDATE ?? DateTime.Now;
                IsProject.Checked     = trip.PRIKAZ.ISPROJECT.Equals("1");

                // По-умолчанию для режима редактирования
                GenNumPrikaz.Checked = false;
                try
                {
                    // Если мы сами генерировали
                    GenNumPrikaz.Checked = Decimal.Parse(trip.PRIKAZ.NUMDOC) == trip.PRIKAZ.PK_PRIKAZ;
                }
                catch (Exception)
                {
                    // Забить
                }
                GenNumPrikaz_CheckedChanged(null, null);
            }

            ReasonTextBox.Text = trip.OSNOVANIE ?? "";

            if (trip.OSNOVANIEDATE != null)
            {
                isDateReasonCheckBox.Checked = true;
                isDateReasonCheckBox_CheckedChanged(null, null);
                DateReason.Value = (DateTime)trip.OSNOVANIEDATE;
            }
            else
            {
                isDateReasonCheckBox.Checked = false;
            }
            NoteTextBox.Text = trip.NOTE ?? "";
        }
Ejemplo n.º 2
0
        /*
         * Для открытия командировки по приказу
         * **/
        public void SetPrikaz(long selectedPrikazPkPrikaz)
        {
            UPDTRIP trip = null;

            try{
                trip = model.UPDTRIP.First(t => t.PK_PRIKAZ == selectedPrikazPkPrikaz);
                if (trip == null)
                {
                    throw new NullReferenceException("С этим приказом не связано ни одной командировки");
                }
            }
            catch (Exception exception)
            {
                MyMsgBox.showError(exception.Message);
                return;
            }
            SetTrip(trip.PK_TRIP);
        }
Ejemplo n.º 3
0
        /*
         * Сохранение
         *
         * */
        public bool Save()
        {
            if (trip == null)
            {
                trip = new UPDTRIP();
            }

            DateTime allStartDate = DateTime.Now, allFinishDate = DateTime.Now;
            String   allPurpose = "", allFinance = "";

            if (isSameDatesCheckBox.Checked)
            {
                allStartDate  = startDate.Value;
                allFinishDate = finishDate.Value;
                if (!checkedDates(allStartDate, allFinishDate))
                {
                    return(false);
                }
            }

            if (PurposeCheckBox.Checked)
            {
                allPurpose = PurposeTextBox.Text;
                if (!checkString(allPurpose, "Цель - пустая строка"))
                {
                    return(false);
                }
            }

            if (FinanceCheckBox.Checked)
            {
                allFinance = FinanceTextBox.Text;
                if (!checkString(allFinance, "Источник финансов - пустая строка"))
                {
                    return(false);
                }
            }

            String   numPrikaz, reason, note;
            DateTime datePrikaz;

            // Основание
            reason = ReasonTextBox.Text;
            if (!checkString(reason, "Основание - пустая строка"))
            {
                return(false);
            }
            trip.OSNOVANIE = reason;
            if (isDateReasonCheckBox.Checked)
            {
                if (checkDateOnNull(DateReason.Value, "Дата основания"))
                {
                    trip.OSNOVANIEDATE = DateReason.Value;
                }
                else
                {
                    return(false);
                }
            }

            // Примечание
            note      = NoteTextBox.Text;
            trip.NOTE = note;

            // Организации
            List <TRIP_ORG> addedOrgs = new List <TRIP_ORG>();
            int             countOrgs = 0;

            foreach (DataGridViewRow row in placesView.Rows)
            {
                decimal pk_org;
                try
                {
                    if ((row.Cells[2] as DataGridViewComboBoxCell).Value == null)
                    {
                        throw new Exception();
                    }
                    pk_org = (Decimal)(row.Cells[2] as DataGridViewComboBoxCell).Value;
                }
                catch (Exception)
                {
                    //Игнорируем
                    continue;
                }

                if (pk_org == 0)
                {
                    Console.WriteLine("пк орг = 0");
                    continue;
                }

                TRIP_ORG org = model.TRIP_ORG.Find(pk_org);

                if (org == null)
                {
                    Console.WriteLine("орг = 0, но пкОрг != 0");
                    continue;
                }
                addedOrgs.Add(org);
                if (trip.TRIP_ORG.Contains(org) == false)
                {
                    trip.TRIP_ORG.Add(org);
                }
                countOrgs++;
            }
            if (countOrgs == 0)
            {
                MyMsgBox.showError("Добавьте хотя бы 1 организацию");
                return(false);
            }
            DeleteFromList <TRIP_ORG>(addedOrgs, trip.TRIP_ORG);

            //Люди
            //Костылёк
            PERSONCARD workerForAddInPrikaz        = null;
            List <PERSONCARD_IN_TRIP> addedWorkers = new List <PERSONCARD_IN_TRIP>();

            foreach (PERSONCARD_IN_TRIP worker in pERSONCARDINTRIPBindingSource)
            {
                if (isSameDatesCheckBox.Checked)
                {
                    worker.STARTDATE = allStartDate;
                    worker.ENDDATE   = allFinishDate;
                }
                if (PurposeCheckBox.Checked)
                {
                    worker.GOAL = allPurpose;
                }
                if (FinanceCheckBox.Checked)
                {
                    worker.FINANCE = allFinance;
                }
                if (checkWorker(worker))
                {
                    if (workerForAddInPrikaz == null)
                    {
                        workerForAddInPrikaz = worker.PERSONCARD;
                    }
                    addedWorkers.Add(worker);
                    if (trip.PERSONCARD_IN_TRIP.Contains <PERSONCARD_IN_TRIP>(worker) == false)
                    {
                        trip.PERSONCARD_IN_TRIP.Add(worker);
                    }
                }
                else
                {
                    if (!MyMsgBox.showAsk("Найдены работники с невалидными данными. Пропустить их(ДА) или остановить сохранение(НЕТ)"))
                    {
                        return(false);
                    }
                }
            }
            if (workerForAddInPrikaz == null)
            {
                MyMsgBox.showError("Добавьте хотя бы 1 человека");
                return(false);
            }
            DeleteFromList <PERSONCARD_IN_TRIP>(addedWorkers, trip.PERSONCARD_IN_TRIP);

            //Приказ
            datePrikaz = DatePrikaz.Value;
            if (trip.PRIKAZ == null)
            {
                trip.PRIKAZ = new PRIKAZ();
                trip.PRIKAZ.PK_TYPE_PRIKAZ = 2;
                trip.PRIKAZ.PK_OUR_ORG     = 1;
                if (trip.PERSONCARD_IN_TRIP.Count > 1)
                {
                    trip.PRIKAZ.OKUD = "0301023";
                }
                else
                {
                    trip.PRIKAZ.OKUD = "0301022";
                }
                trip.PRIKAZ.OKPO = model.OUR_ORG.First().OKPO ?? "";
            }
            //Костылёк
            if (workerForAddInPrikaz != null)
            {
                trip.PRIKAZ.PK_PERSONCARD = workerForAddInPrikaz.PK_PERSONCARD;
            }
            if (checkDateOnNull(DatePrikaz.Value, "Дата приказа"))
            {
                trip.PRIKAZ.CREATEDATE = datePrikaz;
            }
            else
            {
                return(false);
            }
            trip.PRIKAZ.ISPROJECT = IsProject.Checked ? "1" : "0";
            if (GenNumPrikaz.Checked)
            {
                if (trip.PRIKAZ.PK_PRIKAZ != 0)
                {
                    numPrikaz = trip.PRIKAZ.PK_PRIKAZ.ToString();
                }
                else
                {
                    long sequenceGen = model.Database.SqlQuery <long>("Select ADMIN.prikaz_seq.NEXTVAL from dual")
                                       .SingleOrDefault();
                    numPrikaz             = sequenceGen.ToString();
                    trip.PRIKAZ.PK_PRIKAZ = sequenceGen;
                }
            }
            else
            {
                numPrikaz = NumPrikazTextBox.Text;
            }

            if (!checkString(numPrikaz, "Номер приказа - пустая строка"))
            {
                return(false);
            }
            trip.PRIKAZ.NUMDOC = numPrikaz;

            //Новая или старая
            if (trip.PK_TRIP != 0)
            {
                model.Entry <UPDTRIP>(trip).State = EntityState.Modified;
            }
            else
            {
                model.UPDTRIP.Add(trip);
            }

            try {
                model.SaveChanges();
            }
            catch (Exception except)
            {
                Console.Error.WriteLine(except.Message);
                return(false);
            }
            return(true);
        }