Ejemplo n.º 1
0
        // Метод собирает требование обязательности
        private string BuildObligation(int Index, TLVTags_FFDVersions FFD)
        {
            string res = "";

            for (int i = 0; i < oblIndices[Index].Count; i++)
            {
                if (oblFFDVersions[oblIndices[Index][i]] != FFD)
                {
                    continue;
                }

                res += "• Для ";

                // Типы документов
                switch (oblDocTypes[oblIndices[Index][i]])
                {
                case TLVTags_DocumentTypes.AllTypes:
                    res += "всех типов документов";
                    break;

                case TLVTags_DocumentTypes.Bill:
                    res += "чеков и БСО";
                    break;

                case TLVTags_DocumentTypes.BillAndCorrection:
                    res += "чеков и БСО (в том числе – коррекции)";
                    break;

                case TLVTags_DocumentTypes.CloseArchive:
                    res += "отчётов о закрытии архива ФН";
                    break;

                case TLVTags_DocumentTypes.CloseSession:
                    res += "отчётов о закрытии смены";
                    break;

                case TLVTags_DocumentTypes.CodeAnswer:
                    res += "ответов на запросы о кодах маркировки";
                    break;

                case TLVTags_DocumentTypes.CodeRequest:
                    res += "запросов о кодах маркировки";
                    break;

                case TLVTags_DocumentTypes.Correction:
                    res += "чеков и БСО коррекции";
                    break;

                case TLVTags_DocumentTypes.CurrentState:
                    res += "отчётов о состоянии расчётов";
                    break;

                case TLVTags_DocumentTypes.OpenSession:
                    res += "отчётов об открытии смены";
                    break;

                case TLVTags_DocumentTypes.OperatorConfirmation:
                    res += "подтверждений ОФД";
                    break;

                case TLVTags_DocumentTypes.Registration:
                    res += "отчётов о регистрации и перерегистрации";
                    break;

                case TLVTags_DocumentTypes.ReleaseAnswer:
                    res += "квитанций о реализации маркированного товара";
                    break;

                case TLVTags_DocumentTypes.ReleaseRequest:
                    res += "уведомлений о реализации маркированного товара";
                    break;
                }

                // Обязательность
                res += " ";
                for (int j = 0; j < 2; j++)
                {
                    TLVTags_ObligationStates os = ((j == 0) ? oblPrintObligations[oblIndices[Index][i]] :
                                                   oblVirtualObligations[oblIndices[Index][i]]);
                    switch (os)
                    {
                    case TLVTags_ObligationStates.Unused:
                        res += "не предусмотрен";
                        break;

                    case TLVTags_ObligationStates.Required:
                        res += "обязателен";
                        break;

                    case TLVTags_ObligationStates.RequiredWith:
                    case TLVTags_ObligationStates.RecommendedWith:
                        if (os == TLVTags_ObligationStates.RecommendedWith)
                        {
                            res += "не";
                        }
                        res += "обязателен";

                        string condition = ((j == 0) ? oblPrintConditions[oblIndices[Index][i]] :
                                            oblVirtualConditions[oblIndices[Index][i]]);
                        bool cond   = !string.IsNullOrWhiteSpace(condition);
                        bool parent = !string.IsNullOrWhiteSpace(oblParents[oblIndices[Index][i]]);

                        if (cond || parent)
                        {
                            res += " (";
                            if (cond)
                            {
                                res += ("при соблюдении прим. " + condition + " к табл. " +
                                        oblTables[oblIndices[Index][i]]);
                            }

                            if (cond && parent)
                            {
                                res += " и ";
                            }

                            if (parent)
                            {
                                if (os == TLVTags_ObligationStates.RecommendedWith)
                                {
                                    res += ("даже ");
                                }

                                res += ("при наличии тег");
                                if (oblParents[oblIndices[Index][i]].Length > 4)
                                {
                                    res += "ов ";
                                }
                                else
                                {
                                    res += "а ";
                                }
                                res += oblParents[oblIndices[Index][i]];
                            }

                            res += ")";
                        }
                        break;
                    }

                    res += ((j == 0) ? " в печ. форме; " : " в эл. форме;\r\n");
                }
            }

            // Завершено
            if (res.EndsWith(";\r\n"))
            {
                res = res.Substring(0, res.Length - 3);
            }
            if (string.IsNullOrWhiteSpace(res))
            {
                res = "• Нет сведений об обязательности тега в данном ФФД";
            }

            return(res);
        }
Ejemplo n.º 2
0
        public bool FindTag(string Tag, TLVTags_FFDVersions FFD)
#endif
        {
            // Защита
            if (string.IsNullOrWhiteSpace(Tag))
            {
                return(false);
            }
            string tagString = Tag.ToLower();

            // Поиск по коду
            uint tag = 0;
            int  i;

            if (uint.TryParse(tagString, out tag))
            {
                i = tags.IndexOf(tag);
            }

            // Поиск по описанию
            else
            {
                lastIndex++;
                for (i = 0; i < descriptions.Count; i++)
                {
                    if (descriptions[(i + lastIndex) % descriptions.Count].ToLower().Contains(tagString))
                    {
                        i = lastIndex = (i + lastIndex) % descriptions.Count;
                        break;
                    }
                }
            }

            // Проверка
            if ((i < 0) || (i >= descriptions.Count))
            {
                return(false);
            }

            // Найдено
            lastType        = types[i];
            lastDescription = descriptions[i];

            if (links[i] < 0)
            {
                lastValuesSet = "";
            }
            else
            {
                lastValuesSet = possibleValues[links[i]];
            }
            if (lastValuesSet.EndsWith("\r\n"))
            {
                lastValuesSet = lastValuesSet.Substring(0, lastValuesSet.Length - 2);
            }

#if ANDROID
            lastObligation = "<b>Для ФФД 1.05:</b><br/><i>" +
                             BuildObligation(i, TLVTags_FFDVersions.FFD_105).Replace("\r\n", "<br/>") +
                             "</i><br/><br/><b>Для ФФД 1.1:</b><br/><i>" +
                             BuildObligation(i, TLVTags_FFDVersions.FFD_110).Replace("\r\n", "<br/>") +
                             "</i><br/><br/><b>Для ФФД 1.2:</b><br/><i>" +
                             BuildObligation(i, TLVTags_FFDVersions.FFD_120).Replace("\r\n", "<br/>") + "</i>";
#else
            lastObligation = BuildObligation(i, FFD);
#endif

            return(true);
        }