예제 #1
0
        public static bool Verify(ScriptClassBase CardScript, ObjectContext Context, CardData DeviceCard, Guid Client,
                                  DateTime CalibrationDate, List <CardData> AdditionalWaresList, DateTime StartDateOfService, bool IsNewDevice = false)
        {
            string ErrorText = "";

            Guid   DeviceTypeID   = DeviceCard.Sections[CardOrd.Properties.ID].FindRow("@Name = 'Прибор'").GetString(CardOrd.Properties.Value).ToGuid();
            string DeviceTypeName = ApplicationCard.UniversalCard.GetItemName(DeviceTypeID);
            string DeviceNumber   = DeviceCard.GetDeviceNumber();

            // Наличие в справочнике полного названия прибора
            if (ApplicationCard.UniversalCard.GetItemPropertyValue(DeviceTypeID, "Полное название") == null)
            {
                ErrorText = ErrorText + " - Не удалось определить полное название прибора.\n";
            }

            // Наличие в справочнике методики поверки
            if (ApplicationCard.UniversalCard.GetItemPropertyValue(DeviceTypeID, "Методика поверки") == null)
            {
                ErrorText = ErrorText + " - Не удалось определить методику поверки для указанного прибора.\n";
            }

            // Наличие в справочнике средств калибровки
            //if (ApplicationCard.UniversalCard.GetItemPropertyValue(DeviceTypeID, "Средства калибровки") == null)
            if (CalibrationLib.GetListOfMeasures(CardScript.Session, DeviceTypeID, true, false) == "-")
            {
                ErrorText = ErrorText + " - Не удалось определить средства калибровки для указанного прибора.\n";
            }

            // Наличие сведений об условиях калибровки на указанную дату калибровки
            ErrorText = ErrorText + CalibrationLib.CheckCalibrationJournal(CardScript, Context, CalibrationDate);


            //** Проверка родительских документов **//
            TablesCreator Creator         = new TablesCreator();
            string        DeviceErrorText = "";

            // Проверка протокола калибровки прибора
            if (Creator.CertificateDeviceTablesCollection.Any(r => r.DeviceTypes.Any(s => s == DeviceTypeName) && r.ParentDocumentCategory == CertificateTableLook.DocumentCategory.CalibrationProtocol))
            {
                DeviceErrorText = CalibrationLib.CheckDocument(CardScript.Session, DeviceCard, StartDateOfService, CalibrationLib.CalibrationProtocolCategoryID, IsNewDevice);
                if (DeviceErrorText != "")
                {
                    ErrorText = ErrorText + " - Не удалось найти данные о калибровке для " + DeviceTypeName + " " + DeviceNumber + ":\n" + DeviceErrorText;
                }
            }

            // Проверка данных измерений для некоторых приборов
            //if (CalibrationLib.MeasuringDataList.Any(r => r == DeviceTypeName))
            if (Creator.CertificateDeviceTablesCollection.Any(r => r.DeviceTypes.Any(s => s == DeviceTypeName) && r.ParentDocumentCategory == CertificateTableLook.DocumentCategory.MeasuringData))
            {
                DeviceErrorText = CalibrationLib.CheckDocument(CardScript.Session, DeviceCard, StartDateOfService, CalibrationLib.MeasuringDataCategoryID, IsNewDevice);
                if (DeviceErrorText != "")
                {
                    ErrorText = ErrorText + " - Не удалось найти данные измерений для " + DeviceTypeName + " " + DeviceNumber + ":\n" + DeviceErrorText;
                }
            }

            // Проверка протоколов приемосдаточных испытаний для датчиков
            if ((AdditionalWaresList != null) && (AdditionalWaresList.Count() > 0))
            {
                foreach (CardData Ware in AdditionalWaresList)
                {
                    Guid   WareTypeID   = Ware.Sections[CardOrd.Properties.ID].FindRow("@Name = 'Прибор'").GetString(CardOrd.Properties.Value).ToGuid();
                    string WareTypeName = ApplicationCard.UniversalCard.GetItemName(WareTypeID);

                    if (CalibrationLib.SensorsList.Any(r => r == WareTypeName))
                    {
                        string WareNumber = Ware.Sections[CardOrd.Properties.ID].FindRow("@Name = 'Заводской номер прибора'").GetString(CardOrd.Properties.Value).ToString();
                        string WareYear   = Ware.Sections[CardOrd.Properties.ID].FindRow("@Name = '/Год прибора'").GetString(CardOrd.Properties.Value).ToString();
                        WareNumber = WareNumber.Length == 4 ? WareNumber : WareNumber + "/" + WareYear;

                        string SensorsErrorText = CalibrationLib.CheckDocument(CardScript.Session, Ware, StartDateOfService, CalibrationLib.AcceptanceTestingProtocolCategoryID, IsNewDevice);
                        if (SensorsErrorText != "")
                        {
                            ErrorText = ErrorText + " - Не удалось найти данные о приемосдаточных испытаниях для " + WareTypeName + " " + WareNumber + ":\n" + SensorsErrorText;
                        }
                    }
                }
            }
            if (ErrorText == "")
            {
                return(true);
            }
            else
            {
                XtraMessageBox.Show("Не удалось сформировать 'Сертификат о калибровке'. Обнаружены следующие ошибки:\n\n" + ErrorText +
                                    "\nОбратитесь к администратору системы.", "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return(false);
            }
        }