// Метод собирает требование обязательности 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); }
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); }