From 1a877714e9704e53b49106691ed6b844384de9d7 Mon Sep 17 00:00:00 2001 From: McElwain Date: Wed, 10 Jun 2026 17:29:28 -0500 Subject: [PATCH] WIP legal profile Excel templates and UI updates --- app/routes/doc_generator.py | 195 +- static/app.js | 560 +++- static/index.html | 46 +- static/styles.css | 478 ++++ .../content/document_types/legal_profile.json | 2277 +++++++++-------- .../content/excel_maps/legal_profile.json | 551 ++++ .../excel/legal_profile/amortization.xlsx | Bin 0 -> 50551 bytes .../excel/legal_profile/template.xlsx | Bin 0 -> 13413 bytes tools/doc_generator/logic/excel_mapper.py | 211 ++ 9 files changed, 3265 insertions(+), 1053 deletions(-) create mode 100644 tools/doc_generator/content/excel_maps/legal_profile.json create mode 100644 tools/doc_generator/content/templates/excel/legal_profile/amortization.xlsx create mode 100644 tools/doc_generator/content/templates/excel/legal_profile/template.xlsx create mode 100644 tools/doc_generator/logic/excel_mapper.py diff --git a/app/routes/doc_generator.py b/app/routes/doc_generator.py index 9c72992..0556aff 100644 --- a/app/routes/doc_generator.py +++ b/app/routes/doc_generator.py @@ -9,6 +9,7 @@ from pydantic import BaseModel from tools.doc_generator.logic.document_types import get_document_type, list_document_types from tools.doc_generator.logic.renderer import generate_docx +from tools.doc_generator.logic.excel_mapper import export_profile_excel, load_excel_maps, load_excel_map, resolve_excel_template router = APIRouter() @@ -18,11 +19,19 @@ INPUTS_DIR = PROJECT_ROOT / "inputs" UPLOADS_DIR = INPUTS_DIR / "uploads" JSON_UPLOADS_DIR = UPLOADS_DIR / "json" DATA_UPLOADS_DIR = UPLOADS_DIR / "data" +TEMPLATE_UPLOADS_DIR = UPLOADS_DIR / "templates" + + +class ExportExcelRequest(BaseModel): + document_type_id: str + data: dict + map_id: str = "legacy_datafile" class GenerateDocRequest(BaseModel): document_type_id: str data: dict + template_id: str | None = None def safe_filename(filename: str) -> str: @@ -159,10 +168,106 @@ async def upload_data(file: UploadFile = File(...)): } + + +@router.post("/upload-template/{document_type_id}") +async def upload_template(document_type_id: str, file: UploadFile = File(...)): + if not file.filename.lower().endswith(".docx"): + raise HTTPException(status_code=400, detail="Upload must be a DOCX template.") + + # Validate profile exists. + try: + get_document_type(document_type_id) + except FileNotFoundError as exc: + raise HTTPException(status_code=404, detail=str(exc)) + + profile_dir = TEMPLATE_UPLOADS_DIR / safe_filename(document_type_id) + path = save_upload(file, profile_dir) + + return { + "ok": True, + "filename": path.name, + "template_id": f"uploaded:{path.name}", + "saved_path": str(path.relative_to(PROJECT_ROOT)), + } + + +@router.get("/uploaded-templates/{document_type_id}") +def uploaded_templates(document_type_id: str): + profile_dir = TEMPLATE_UPLOADS_DIR / safe_filename(document_type_id) + profile_dir.mkdir(parents=True, exist_ok=True) + + templates = [] + for path in sorted(profile_dir.glob("*.docx")): + templates.append({ + "id": f"uploaded:{path.name}", + "label": path.name, + "filename": path.name, + "saved_path": str(path.relative_to(PROJECT_ROOT)), + "modified": path.stat().st_mtime, + }) + + return {"templates": templates} + + +@router.delete("/uploaded-template/{document_type_id}/{template_id}") +def delete_uploaded_template(document_type_id: str, template_id: str): + doc_dir = TEMPLATE_UPLOADS_DIR / safe_filename(document_type_id) + file_path = doc_dir / safe_filename(template_id) + + if not file_path.exists(): + raise HTTPException(status_code=404, detail="Template not found.") + + file_path.unlink() + return {"deleted": True, "template_id": file_path.name} + + + + + +@router.get("/excel-maps/{document_type_id}") +def get_excel_maps_route(document_type_id: str): + try: + maps = load_excel_maps(document_type_id) + except FileNotFoundError: + return {"maps": []} + + return { + "maps": [ + { + "id": item.get("id"), + "label": item.get("label", item.get("id")), + "field_count": len(item.get("field_to_cell", {})), + "fields": sorted(item.get("field_to_cell", {}).keys()), + "template": item.get("template"), + "mode": item.get("mode", "map"), + } + for item in maps + ] + } + +@router.post("/export-excel") +def export_excel(request: ExportExcelRequest): + try: + output_path = export_profile_excel( + request.document_type_id, + request.data, + request.map_id, + ) + return { + "filename": output_path.name, + "download_url": f"/api/doc-generator/download/{output_path.name}", + } + except FileNotFoundError as exc: + raise HTTPException(status_code=404, detail=str(exc)) + except Exception as exc: + raise HTTPException(status_code=400, detail=str(exc)) + + @router.post("/generate") def generate_document(request: GenerateDocRequest): try: - output_path = generate_docx(request.document_type_id, request.data) + output_path = generate_docx(request.document_type_id, request.data, request.template_id) except FileNotFoundError as exc: raise HTTPException(status_code=404, detail=str(exc)) except Exception as exc: @@ -175,15 +280,87 @@ def generate_document(request: GenerateDocRequest): } -@router.get("/download/{filename}") -def download(filename: str): - file_path = EXPORTS_DIR / safe_filename(filename) - if not file_path.exists(): - raise HTTPException(status_code=404, detail="File not found") + +@router.get("/excel-template/{template_name}") +def download_excel_template(template_name: str): + allowed = { + "datafile": "template.xlsx", + "amortization": "amortization.xlsx", + } + + filename = allowed.get(template_name) + if not filename: + raise HTTPException(status_code=404, detail="Unknown Excel template.") + + path = OLD_WORD_DOC_GENERATOR_DIR / filename + + if not path.exists(): + raise HTTPException(status_code=404, detail=f"Excel template not found: {path}") return FileResponse( - path=file_path, - filename=file_path.name, - media_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document", + path, + filename=filename, + media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ) + + + + + +@router.get("/excel-template-by-map/{document_type_id}/{map_id}") +def download_excel_template_by_map(document_type_id: str, map_id: str): + try: + excel_map = load_excel_map(document_type_id, map_id) + template_path = resolve_excel_template(excel_map.get("template")) + except FileNotFoundError as exc: + raise HTTPException(status_code=404, detail=str(exc)) + except Exception as exc: + raise HTTPException(status_code=400, detail=str(exc)) + + return FileResponse( + path=template_path, + filename=template_path.name, + media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ) + + + + +@router.delete("/uploaded-template/{document_type_id}/{filename}") +def delete_uploaded_template(document_type_id: str, filename: str): + folder = TEMPLATE_UPLOADS_DIR / safe_filename(document_type_id) + path = folder / safe_filename(filename) + + if not path.exists(): + raise HTTPException(status_code=404, detail="Uploaded template not found.") + + if path.suffix.lower() != ".docx": + raise HTTPException(status_code=400, detail="Only DOCX templates can be deleted here.") + + path.unlink() + return {"deleted": True, "filename": path.name} + +@router.get("/download/{filename}") +def download_file(filename: str): + safe_name = safe_filename(filename) + path = EXPORTS_DIR / safe_name + + if not path.exists(): + raise HTTPException(status_code=404, detail="File not found.") + + suffix = path.suffix.lower() + + media_types = { + ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ".csv": "text/csv", + ".json": "application/json", + ".pdf": "application/pdf", + } + + return FileResponse( + path, + filename=path.name, + media_type=media_types.get(suffix, "application/octet-stream"), ) diff --git a/static/app.js b/static/app.js index 8c7ab34..ceca8cc 100644 --- a/static/app.js +++ b/static/app.js @@ -10,6 +10,8 @@ const downloadDataButton = document.getElementById("downloadDataButton"); const downloadJsonButton = document.getElementById("downloadJsonButton"); const defaultDocumentOptions = document.getElementById("defaultDocumentOptions"); const uploadedJsonOptions = document.getElementById("uploadedJsonOptions"); +const legacyTemplateSelect = document.getElementById("legacyTemplateSelect"); +const legacyTemplateRow = document.getElementById("legacyTemplateRow"); const documentPickerToggle = document.getElementById("documentPickerToggle"); const documentPickerMenu = document.getElementById("documentPickerMenu"); const selectedDocumentLabel = document.getElementById("selectedDocumentLabel"); @@ -19,6 +21,7 @@ let currentFields = []; let defaultDocumentTypes = []; let activePickerKind = "default"; let activePickerId = ""; +let selectedTemplateId = ""; function setStatus(message) { statusBox.innerHTML = message || ""; @@ -67,7 +70,13 @@ function createInput(field) { } } else { input = document.createElement("input"); - input.type = field.type || "text"; + input.type = "text"; + + if (field.type === "autocomplete" && field.list) { + input.setAttribute("list", `datalist-${field.list}`); + } else { + input.type = field.type || "text"; + } } input.id = field.name; @@ -164,9 +173,69 @@ function renderFlatFields(fields) { } } + +function renderDatalists(documentType) { + document.querySelectorAll("datalist[data-generated-list='true']").forEach(el => el.remove()); + + const lists = documentType.lists || {}; + for (const [listName, values] of Object.entries(lists)) { + const datalist = document.createElement("datalist"); + datalist.id = `datalist-${listName}`; + datalist.dataset.generatedList = "true"; + + for (const value of values || []) { + const option = document.createElement("option"); + option.value = value; + datalist.appendChild(option); + } + + document.body.appendChild(datalist); + } +} + +function renderTemplateSelector(documentType) { + if (!legacyTemplateSelect || !legacyTemplateRow) return; + + const templates = documentType.templates || []; + + legacyTemplateSelect.innerHTML = ""; + + if (!templates.length) { + legacyTemplateRow.style.display = "none"; + selectedTemplateId = ""; + return; + } + + legacyTemplateRow.style.display = "block"; + + for (const template of templates) { + const option = document.createElement("option"); + option.value = template.id; + option.textContent = template.label || template.id; + legacyTemplateSelect.appendChild(option); + } + + const savedTemplate = localStorage.getItem(`utilityAppSelectedTemplate:${documentType.id}`); + selectedTemplateId = savedTemplate && templates.some(t => t.id === savedTemplate) + ? savedTemplate + : (documentType.defaultTemplateId || templates[0].id); + + legacyTemplateSelect.value = selectedTemplateId; +} + +function getSelectedTemplateId() { + if (!legacyTemplateSelect || legacyTemplateRow?.style.display === "none") { + return ""; + } + return legacyTemplateSelect.value || selectedTemplateId || ""; +} + + function renderDocumentType(documentType) { fieldsContainer.innerHTML = ""; currentFields = []; + renderDatalists(documentType); + renderTemplateSelector(documentType); if (Array.isArray(documentType.sections)) { for (const section of documentType.sections) { @@ -600,6 +669,7 @@ docForm.addEventListener("submit", async event => { headers: {"Content-Type": "application/json"}, body: JSON.stringify({ document_type_id: currentDocumentType.id, + template_id: getSelectedTemplateId(), data: getFormData(true) }) }); @@ -750,3 +820,491 @@ if (savedActiveView) { requestAnimationFrame(() => { document.body.classList.remove("app-loading"); }); + + +if (legacyTemplateSelect) { + legacyTemplateSelect.addEventListener("change", () => { + selectedTemplateId = legacyTemplateSelect.value; + if (currentDocumentType?.id) { + localStorage.setItem(`utilityAppSelectedTemplate:${currentDocumentType.id}`, selectedTemplateId); + } + saveCurrentFormData(); + }); +} + +function removeDynamicFields(groupId) { + document.querySelectorAll(`[data-dynamic-group="${groupId}"]`).forEach(el => el.remove()); + currentFields = currentFields.filter(field => field.dynamicGroup !== groupId); +} + +function renderDynamicFieldGroup(group) { + if (!currentDocumentType) return; + + const countEl = document.getElementById(group.countField); + if (!countEl) return; + + const count = Math.min( + parseInt(countEl.value || "0", 10) || 0, + group.maxCount || 100 + ); + + removeDynamicFields(group.id); + + if (count <= 0) return; + + const wrapper = document.createElement("div"); + wrapper.dataset.dynamicGroup = group.id; + wrapper.className = "json-section dynamic-field-group"; + + const details = document.createElement("details"); + details.open = group.defaultOpen !== false; + + const summary = document.createElement("summary"); + summary.textContent = `${group.section || "Dynamic Fields"} (${count})`; + details.appendChild(summary); + + const generatedFields = []; + + for (let n = 1; n <= count; n++) { + for (const fieldDef of group.fields || []) { + generatedFields.push({ + name: fieldDef.namePattern.replaceAll("{n}", String(n)), + label: fieldDef.labelPattern.replaceAll("{n}", String(n)), + type: fieldDef.type || "text", + list: fieldDef.list, + required: Boolean(fieldDef.required), + dynamicGroup: group.id + }); + } + } + + currentFields.push(...generatedFields); + appendFieldRows(details, generatedFields); + + wrapper.appendChild(details); + + const countField = document.getElementById(group.countField); + const sectionWrapper = countField?.closest(".json-section"); + + if (sectionWrapper) { + sectionWrapper.appendChild(wrapper); + } else { + fieldsContainer.appendChild(wrapper); + } + + restoreSavedFormData(); +} + +function renderAllDynamicFieldGroups() { + if (!currentDocumentType?.dynamicFieldGroups) return; + + for (const group of currentDocumentType.dynamicFieldGroups) { + renderDynamicFieldGroup(group); + + const countEl = document.getElementById(group.countField); + if (countEl && !countEl.dataset.dynamicListenerAttached) { + countEl.dataset.dynamicListenerAttached = "true"; + + countEl.addEventListener("input", () => { + saveCurrentFormData(); + renderDynamicFieldGroup(group); + }); + + countEl.addEventListener("change", () => { + saveCurrentFormData(); + renderDynamicFieldGroup(group); + }); + } + } +} + +const originalRenderDocumentTypeForDynamicGroups = renderDocumentType; +renderDocumentType = function(documentType) { + originalRenderDocumentTypeForDynamicGroups(documentType); + renderAllDynamicFieldGroups(); + loadExcelMaps(); +}; + +const templateFileInput = document.getElementById("templateFileInput"); + +async function fetchUploadedTemplatesForCurrentProfile() { + if (!currentDocumentType?.id) return []; + + try { + const response = await fetch(`/api/doc-generator/uploaded-templates/${encodeURIComponent(currentDocumentType.id)}`); + const json = await response.json(); + + if (!response.ok) { + return []; + } + + return json.templates || []; + } catch { + return []; + } +} + +const originalRenderTemplateSelectorWithUploads = renderTemplateSelector; +renderTemplateSelector = function(documentType) { + if (!legacyTemplateSelect || !legacyTemplateRow) return; + + const libraryTemplates = documentType.templates || []; + + legacyTemplateSelect.innerHTML = ""; + + if (!libraryTemplates.length && !documentType.id) { + legacyTemplateRow.style.display = "none"; + selectedTemplateId = ""; + return; + } + + legacyTemplateRow.style.display = "block"; + + if (libraryTemplates.length) { + const libraryGroup = document.createElement("optgroup"); + libraryGroup.label = "Library Templates"; + + for (const template of libraryTemplates) { + const option = document.createElement("option"); + option.value = template.id; + option.textContent = template.label || template.id; + libraryGroup.appendChild(option); + } + + legacyTemplateSelect.appendChild(libraryGroup); + } + + const uploadedGroup = document.createElement("optgroup"); + uploadedGroup.label = "Uploaded Templates"; + uploadedGroup.id = "uploadedTemplateOptGroup"; + legacyTemplateSelect.appendChild(uploadedGroup); + + const savedTemplate = localStorage.getItem(`utilityAppSelectedTemplate:${documentType.id}`); + selectedTemplateId = savedTemplate || documentType.defaultTemplateId || libraryTemplates[0]?.id || ""; + + if (selectedTemplateId) { + legacyTemplateSelect.value = selectedTemplateId; + } + + refreshUploadedTemplateOptions(); +}; + +async function refreshUploadedTemplateOptions() { + if (!legacyTemplateSelect || !currentDocumentType?.id) return; + + let uploadedGroup = document.getElementById("uploadedTemplateOptGroup"); + + if (!uploadedGroup) { + uploadedGroup = document.createElement("optgroup"); + uploadedGroup.label = "Uploaded Templates"; + uploadedGroup.id = "uploadedTemplateOptGroup"; + legacyTemplateSelect.appendChild(uploadedGroup); + } + + uploadedGroup.innerHTML = ""; + + const uploadedTemplates = await fetchUploadedTemplatesForCurrentProfile(); + + for (const template of uploadedTemplates) { + const option = document.createElement("option"); + option.value = template.id; + option.textContent = template.label || template.filename; + uploadedGroup.appendChild(option); + } + + const savedTemplate = localStorage.getItem(`utilityAppSelectedTemplate:${currentDocumentType.id}`); + if (savedTemplate && [...legacyTemplateSelect.options].some(option => option.value === savedTemplate)) { + legacyTemplateSelect.value = savedTemplate; + selectedTemplateId = savedTemplate; + } +} + +if (templateFileInput) { + templateFileInput.addEventListener("change", async event => { + const file = event.target.files[0]; + if (!file) return; + + if (!currentDocumentType?.id) { + setStatus("Select a profile before uploading a template."); + templateFileInput.value = ""; + return; + } + + try { + const formData = new FormData(); + formData.append("file", file); + + const response = await fetch(`/api/doc-generator/upload-template/${encodeURIComponent(currentDocumentType.id)}`, { + method: "POST", + body: formData + }); + + const result = await response.json(); + + if (!response.ok) { + throw new Error(result.detail || "Template upload failed."); + } + + await refreshUploadedTemplateOptions(); + + legacyTemplateSelect.value = result.template_id; + selectedTemplateId = result.template_id; + localStorage.setItem(`utilityAppSelectedTemplate:${currentDocumentType.id}`, selectedTemplateId); + + setStatus(`Uploaded template: ${result.filename}
Saved to: ${result.saved_path}`); + } catch (error) { + setStatus(`Could not upload template: ${error.message}`); + } finally { + templateFileInput.value = ""; + } + }); +} + +const excelMapSelect = document.getElementById("excelMapSelect"); +const exportExcelButton = document.getElementById("exportExcelButton"); +const excelImportInput = document.getElementById("excelImportInput"); + +async function loadExcelMaps() { + if (!excelMapSelect) return; + + try { + if (!currentDocumentType?.id) return; + const response = await fetch(`/api/doc-generator/excel-maps/${encodeURIComponent(currentDocumentType.id)}`); + const json = await response.json(); + + if (!response.ok) { + throw new Error(json.detail || "Could not load Excel maps."); + } + + excelMapSelect.innerHTML = ""; + + for (const item of json.maps || []) { + const option = document.createElement("option"); + option.value = item.id; + option.textContent = `${item.label || item.id} (${item.field_count} fields)`; + excelMapSelect.appendChild(option); + } + + const saved = localStorage.getItem("utilityAppExcelMapId"); + if (saved && [...excelMapSelect.options].some(option => option.value === saved)) { + excelMapSelect.value = saved; + } + } catch (error) { + setStatus(`Could not load Excel maps: ${error.message}`); + } +} + +if (excelMapSelect) { + excelMapSelect.addEventListener("change", () => { + localStorage.setItem("utilityAppExcelMapId", excelMapSelect.value); + }); +} + +if (exportExcelButton) { + exportExcelButton.addEventListener("click", async () => { + if (!currentDocumentType?.id) { + setStatus("Select a profile before exporting Excel."); + return; + } + + try { + saveCurrentFormData(); + + const response = await fetch("/api/doc-generator/export-excel", { + method: "POST", + headers: {"Content-Type": "application/json"}, + body: JSON.stringify({ + document_type_id: currentDocumentType.id, + map_id: excelMapSelect?.value || "field_to_cell_map", + data: getFormData(true) + }) + }); + + const result = await response.json(); + + if (!response.ok) { + throw new Error(result.detail || "Excel export failed."); + } + + const link = document.createElement("a"); + link.href = result.download_url; + link.download = result.filename; + document.body.appendChild(link); + link.click(); + link.remove(); + + setStatus(`Exported Excel: ${result.filename}`); + } catch (error) { + setStatus(`Could not export Excel: ${error.message}`); + } + }); +} + +if (excelImportInput) { + excelImportInput.addEventListener("change", () => { + setStatus("Excel import is not wired yet. Export is ready."); + excelImportInput.value = ""; + }); +} + +loadExcelMaps(); + +/* Excel template download button */ +const downloadExcelTemplateButton = document.getElementById("downloadExcelTemplateButton"); + +if (downloadExcelTemplateButton) { + downloadExcelTemplateButton.addEventListener("click", () => { + if (!currentDocumentType?.id || !excelMapSelect?.value) { + setStatus("Select a profile and Excel template/map first."); + return; + } + + window.location.href = `/api/doc-generator/excel-template-by-map/${encodeURIComponent(currentDocumentType.id)}/${encodeURIComponent(excelMapSelect.value)}`; + }); +} + + +/* final legal profile UI normalization */ + +function normalizeLegalUi() { + const profileSelect = document.getElementById("documentTypeSelect"); + const excelSelect = document.getElementById("excelMapSelect"); + const templateSelect = document.getElementById("legacyTemplateSelect"); + + for (const select of [profileSelect, excelSelect, templateSelect]) { + if (select) { + select.classList.add("same-dropdown-style"); + } + } + + if (profileSelect) { + for (const option of [...profileSelect.options]) { + if (option.value === "legal_profile" || option.textContent.trim() === "Legal Profile") { + option.textContent = "Legal"; + } + } + } + + const longText = "Consumer debt defense legal profile based on the legacy app form fields. Additional template fields are calculated at generation time."; + for (const el of [...document.querySelectorAll("p, div, span")]) { + const value = el.textContent.trim(); + if (value === longText || value === "Consumer Debt Defense Legal Profile") { + el.textContent = "Consumer Debt Defense Legal Profile"; + el.classList.add("legal-profile-caption"); + } + } +} + +async function fetchUploadedTemplatesForDeleteUi() { + if (!currentDocumentType?.id) return []; + const response = await fetch(`/api/doc-generator/uploaded-templates/${encodeURIComponent(currentDocumentType.id)}`); + if (!response.ok) return []; + const json = await response.json(); + return json.templates || []; +} + +function ensureUploadedTemplateManager() { + const row = document.getElementById("legacyTemplateRow"); + if (!row) return null; + + let manager = document.getElementById("uploadedTemplatesManager"); + if (manager) return manager; + + manager = document.createElement("div"); + manager.id = "uploadedTemplatesManager"; + manager.className = "uploaded-template-manager"; + manager.innerHTML = ` +
Uploaded Templates
+
+ `; + row.appendChild(manager); + return manager; +} + +async function renderUploadedTemplateDeleteUi() { + const manager = ensureUploadedTemplateManager(); + if (!manager) return; + + const list = document.getElementById("uploadedTemplatesList"); + if (!list) return; + + const templates = await fetchUploadedTemplatesForDeleteUi(); + const uploaded = templates.filter(item => { + const id = item.id || item.filename || ""; + return id.startsWith("uploaded:") || item.source === "uploaded" || item.uploaded === true; + }); + + if (!uploaded.length) { + manager.style.display = "none"; + list.innerHTML = ""; + return; + } + + manager.style.display = ""; + list.innerHTML = ""; + + for (const item of uploaded) { + const rawId = item.id || item.filename || ""; + const filename = rawId.replace(/^uploaded:/, ""); + + const row = document.createElement("div"); + row.className = "uploaded-template-row"; + + const name = document.createElement("span"); + name.className = "uploaded-template-name"; + name.textContent = item.label || filename; + + const button = document.createElement("button"); + button.type = "button"; + button.className = "small-delete-button"; + button.textContent = "Delete"; + + button.addEventListener("click", async () => { + if (!confirm(`Delete uploaded template "${filename}"?`)) return; + + const response = await fetch( + `/api/doc-generator/uploaded-template/${encodeURIComponent(currentDocumentType.id)}/${encodeURIComponent(filename)}`, + {method: "DELETE"} + ); + + if (!response.ok) { + const json = await response.json().catch(() => ({})); + setStatus(`Could not delete template: ${json.detail || response.statusText}`); + return; + } + + setStatus("Uploaded template deleted."); + + if (typeof renderTemplateSelector === "function") { + await renderTemplateSelector(currentDocumentType); + } + + await renderUploadedTemplateDeleteUi(); + }); + + row.appendChild(name); + row.appendChild(button); + list.appendChild(row); + } +} + +function runLegalUiCleanup() { + normalizeLegalUi(); + renderUploadedTemplateDeleteUi(); +} + +document.addEventListener("DOMContentLoaded", () => { + runLegalUiCleanup(); + setTimeout(runLegalUiCleanup, 300); + setTimeout(runLegalUiCleanup, 1000); +}); + +const finalLegalUiObserver = new MutationObserver(() => { + clearTimeout(window.__legalUiTimer); + window.__legalUiTimer = setTimeout(runLegalUiCleanup, 100); +}); + +finalLegalUiObserver.observe(document.body, { + childList: true, + subtree: true +}); diff --git a/static/index.html b/static/index.html index 25731c0..603141b 100644 --- a/static/index.html +++ b/static/index.html @@ -2,7 +2,7 @@ Utility App - +
@@ -55,6 +55,11 @@ + +

Document Type

@@ -78,7 +83,44 @@
+ + + + + + + + + + +
+ +
+
+ + +
+ + + + + +
+ + +

Generate Documents

@@ -110,6 +152,6 @@
- + diff --git a/static/styles.css b/static/styles.css index 1a5a304..8e0ba14 100644 --- a/static/styles.css +++ b/static/styles.css @@ -429,3 +429,481 @@ body.app-loading .container { .container { transition: opacity 120ms ease-out; } + +.tool-button-row { + overflow-x: auto; + padding-bottom: 2px; +} + +.tool-action-button, +button.tool-action-button, +label.tool-action-button { + flex: 0 0 120px; +} + +.excel-transfer-row { + display: flex; + align-items: end; + gap: 10px; + margin: 12px 0 22px 0; + flex-wrap: wrap; +} + +.excel-transfer-row label { + font-weight: 700; +} + +.excel-transfer-row select { + min-width: 260px; + flex: 1 1 260px; +} + +.excel-transfer-row .tool-action-button { + height: 34px; +} + +#exportExcelButton:not(:disabled) { + cursor: pointer; + opacity: 1; +} + +#exportExcelButton:disabled { + cursor: not-allowed; + opacity: 0.45; +} + +.native-hidden-select { + display: none !important; +} + +.excel-transfer-row { + display: flex; + align-items: flex-end; + gap: 10px; + margin: 12px 0 14px 0; + flex-wrap: wrap; +} + +.template-picker-row { + margin: 0 0 22px 0; +} + +.custom-select-block { + flex: 1 1 320px; + min-width: 260px; +} + +.custom-select-block label { + display: block; + font-weight: 700; + margin-bottom: 5px; +} + +.custom-picker { + position: relative; + width: 100%; +} + +.custom-picker-button { + width: 100%; + min-height: 36px; + text-align: left; + padding: 7px 34px 7px 10px; + border: 1px solid #bbb; + border-radius: 4px; + background: #fff; + color: #111; + font: inherit; + cursor: pointer; + position: relative; +} + +.custom-picker-button::after { + content: "▾"; + position: absolute; + right: 10px; + top: 7px; + color: #444; +} + +.custom-picker-menu { + display: none; + position: absolute; + z-index: 50; + left: 0; + right: 0; + top: calc(100% + 3px); + max-height: 340px; + overflow-y: auto; + background: #fff; + border: 1px solid #aaa; + border-radius: 4px; + box-shadow: 0 6px 18px rgba(0,0,0,0.18); +} + +.custom-picker.open .custom-picker-menu { + display: block; +} + +.custom-picker-group-label { + padding: 7px 10px; + font-size: 12px; + font-weight: 700; + color: #555; + background: #f1f1f1; + border-bottom: 1px solid #ddd; + text-transform: uppercase; + letter-spacing: 0.03em; +} + +.custom-picker-option { + display: block; + width: 100%; + padding: 8px 10px; + border: 0; + border-bottom: 1px solid #eee; + background: #fff; + text-align: left; + font: inherit; + color: #111; + cursor: pointer; +} + +.custom-picker-option:hover, +.custom-picker-option.selected { + background: #eaf2ff; +} + +#downloadExcelTemplateButton, +#exportExcelButton { + flex: 0 0 145px; +} + +.excel-transfer-row { + display: flex; + align-items: flex-end; + gap: 10px; + margin: 14px 0 18px 0; + flex-wrap: wrap; +} + +.excel-map-block { + flex: 1 1 360px; + min-width: 260px; +} + +.template-picker-row { + margin: 0 0 22px 0; +} + +.template-picker-row label, +.excel-map-block label { + display: block; + font-weight: 700; + margin-bottom: 6px; +} + +.styled-select { + width: 100%; + min-height: 38px; + padding: 7px 10px; + border: 1px solid #999; + border-radius: 4px; + background: #fff; + color: #111; + font: inherit; +} + +#downloadExcelTemplateButton, +#exportExcelButton, +.excel-transfer-row .file-button { + flex: 0 0 auto; + min-height: 38px; +} + +.document-type-caption { + font-size: 0.82rem; + color: #8a8a8a; + margin-top: 6px; + margin-bottom: 14px; + line-height: 1.3; +} + +.excel-transfer-row { + display: flex; + align-items: flex-end; + gap: 10px; + flex-wrap: wrap; + margin: 12px 0 18px 0; +} + +.select-block { + flex: 1 1 340px; + min-width: 260px; +} + +.template-picker-row { + margin: 0 0 22px 0; +} + +.template-picker-row label, +.select-block label { + display: block; + font-weight: 700; + margin-bottom: 6px; +} + +.uploaded-template-manager { + margin-top: 10px; + border-top: 1px solid #ddd; + padding-top: 10px; +} + +.uploaded-template-manager-title { + font-size: 0.9rem; + font-weight: 700; + margin-bottom: 6px; +} + +.uploaded-template-row { + display: flex; + justify-content: space-between; + align-items: center; + gap: 10px; + padding: 6px 0; +} + +.uploaded-template-name { + font-size: 0.92rem; + color: #333; + word-break: break-word; +} + +.small-delete-button { + border: 1px solid #bbb; + background: #f7f7f7; + padding: 4px 8px; + border-radius: 4px; + cursor: pointer; +} + +#downloadExcelTemplateButton, +#exportExcelButton, +.excel-transfer-row .file-button { + min-height: 38px; + flex: 0 0 auto; +} + +/* unified dropdown styling */ +#documentTypeSelect, +#excelMapSelect, +#legacyTemplateSelect { + width: 100%; + min-height: 38px; + padding: 7px 34px 7px 10px; + border: 1px solid #9f9f9f; + border-radius: 4px; + background-color: #eeeef4; + color: #222; + font: inherit; + line-height: 1.25; + box-sizing: border-box; +} + +#documentTypeSelect { + max-width: 390px; +} + +#excelMapSelect { + min-width: 0; +} + +#legacyTemplateSelect { + width: 100%; +} + +/* small light-gray profile caption */ +#documentTypeDescription, +.document-type-description, +.profile-description, +[data-role="document-type-description"] { + font-size: 0.82rem !important; + color: #8a8a8a !important; + line-height: 1.3 !important; + margin: 6px 0 14px 0 !important; + font-weight: 400 !important; +} + +/* tighter Excel row */ +#excelTransferRow, +.excel-transfer-row { + display: grid !important; + grid-template-columns: minmax(260px, 1fr) auto auto auto; + gap: 10px; + align-items: end; + margin: 12px 0 18px 0; +} + +#excelTransferRow label, +.excel-transfer-row label { + font-weight: 700; + margin-bottom: 6px; +} + +#excelTransferRow .file-button, +.excel-transfer-row .file-button, +#downloadExcelTemplateButton, +#exportExcelButton { + min-height: 38px; + white-space: nowrap; +} + +/* template selector below Excel row */ +#legacyTemplateRow, +.template-picker-row { + margin: 0 0 22px 0; +} + +#legacyTemplateRow label, +.template-picker-row label { + display: block; + font-weight: 700; + margin-bottom: 6px; +} + +@media (max-width: 760px) { + #excelTransferRow, + .excel-transfer-row { + grid-template-columns: 1fr; + } + + #downloadExcelTemplateButton, + #exportExcelButton, + #excelTransferRow .file-button, + .excel-transfer-row .file-button { + width: 100%; + } +} + +.uploaded-template-manager { + margin-top: 10px; + padding-top: 10px; + border-top: 1px solid #ddd; +} + +.uploaded-template-manager-title { + font-size: 0.85rem; + font-weight: 700; + color: #555; + margin-bottom: 6px; +} + +.uploaded-template-row { + display: flex; + justify-content: space-between; + gap: 10px; + align-items: center; + padding: 5px 0; +} + +.uploaded-template-name { + font-size: 0.86rem; + color: #444; + word-break: break-word; +} + +.small-delete-button { + border: 1px solid #bbb; + background: #f6f6f6; + border-radius: 4px; + padding: 4px 8px; + font-size: 0.8rem; + cursor: pointer; +} + + +/* final legal UI overrides */ +#documentTypeSelect, +#excelMapSelect, +#legacyTemplateSelect, +.same-dropdown-style { + width: 100% !important; + min-height: 38px !important; + padding: 7px 34px 7px 10px !important; + border: 1px solid #9f9f9f !important; + border-radius: 4px !important; + background-color: #eeeef4 !important; + color: #222 !important; + font: inherit !important; + line-height: 1.25 !important; + box-sizing: border-box !important; +} + +#documentTypeSelect { + max-width: 390px !important; +} + +.legal-profile-caption { + font-size: 0.82rem !important; + color: #8a8a8a !important; + line-height: 1.3 !important; + margin: 6px 0 14px 0 !important; + font-weight: 400 !important; +} + +#excelTransferRow, +.excel-transfer-row { + display: grid !important; + grid-template-columns: minmax(260px, 1fr) auto auto auto !important; + gap: 10px !important; + align-items: end !important; + margin: 12px 0 18px 0 !important; +} + +#legacyTemplateRow, +.template-picker-row { + margin: 0 0 22px 0 !important; +} + +.uploaded-template-manager { + margin-top: 10px !important; + padding-top: 10px !important; + border-top: 1px solid #ddd !important; +} + +.uploaded-template-manager-title { + font-size: 0.85rem !important; + font-weight: 700 !important; + color: #555 !important; + margin-bottom: 6px !important; +} + +.uploaded-template-row { + display: flex !important; + justify-content: space-between !important; + gap: 10px !important; + align-items: center !important; + padding: 5px 0 !important; +} + +.uploaded-template-name { + font-size: 0.86rem !important; + color: #444 !important; + word-break: break-word !important; +} + +.small-delete-button { + border: 1px solid #bbb !important; + background: #f6f6f6 !important; + border-radius: 4px !important; + padding: 4px 8px !important; + font-size: 0.8rem !important; + cursor: pointer !important; +} + +@media (max-width: 760px) { + #excelTransferRow, + .excel-transfer-row { + grid-template-columns: 1fr !important; + } +} diff --git a/tools/doc_generator/content/document_types/legal_profile.json b/tools/doc_generator/content/document_types/legal_profile.json index 52d6633..e4a943e 100644 --- a/tools/doc_generator/content/document_types/legal_profile.json +++ b/tools/doc_generator/content/document_types/legal_profile.json @@ -1,8 +1,8 @@ { "id": "legal_profile", - "name": "Legal Profile", - "description": "Consumer debt defense legal profile based on the legacy app form fields. Additional template fields are calculated at generation time.", - "template": "legacy/Canned-Emails.docx", + "name": "Legal", + "description": "Consumer Debt Defense Legal Profile", + "template": "legacy/Pleadings/KS_Answer.docx", "outputFilename": "legal_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx", "lists": { "plaintiffs": [], @@ -23,1150 +23,1341 @@ }, "templates": [ { - "id": "canned_emails", - "label": "Canned-Emails", - "template": "legacy/Canned-Emails.docx", - "outputFilename": "canned_emails_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "abbot_osborn_jacobs_mo_db_disco", - "label": "Discovery / Abbot-Osborn-Jacobs MO-DB-disco", - "template": "legacy/Discovery/Abbot-Osborn-Jacobs_MO-DB-disco.docx", - "outputFilename": "abbot_osborn_jacobs_mo_db_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "allen_withrow_mo_oc_disco_rfas", - "label": "Discovery / Allen-Withrow MO-OC-disco-RFAs", - "template": "legacy/Discovery/Allen-Withrow_MO-OC-disco-RFAs.docx", - "outputFilename": "allen_withrow_mo_oc_disco_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "allen_withrow_mo_oc_disco", - "label": "Discovery / Allen-Withrow MO-OC-disco", - "template": "legacy/Discovery/Allen-Withrow_MO-OC-disco.docx", - "outputFilename": "allen_withrow_mo_oc_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "bq_ks_disco_db_cc", - "label": "Discovery / BQ-KS-disco-DB-CC", - "template": "legacy/Discovery/BQ-KS-disco-DB-CC.docx", - "outputFilename": "bq_ks_disco_db_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "bq_ks_disco_db_cc_ryan", - "label": "Discovery / BQ-KS-disco-DB-CC Ryan", - "template": "legacy/Discovery/BQ-KS-disco-DB-CC_Ryan.docx", - "outputFilename": "bq_ks_disco_db_cc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "bq_ks_disco_db_loan", - "label": "Discovery / BQ-KS-disco-DB-Loan", - "template": "legacy/Discovery/BQ-KS-disco-DB-Loan.docx", - "outputFilename": "bq_ks_disco_db_loan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "bq_ks_disco_db_loan_ryan", - "label": "Discovery / BQ-KS-disco-DB-Loan Ryan", - "template": "legacy/Discovery/BQ-KS-disco-DB-Loan_Ryan.docx", - "outputFilename": "bq_ks_disco_db_loan_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "bq_ks_disco_oc_cc", - "label": "Discovery / BQ-KS-disco-OC-CC", - "template": "legacy/Discovery/BQ-KS-disco-OC-CC.docx", - "outputFilename": "bq_ks_disco_oc_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "bq_ks_disco_oc_cc_ryan", - "label": "Discovery / BQ-KS-disco-OC-CC Ryan", - "template": "legacy/Discovery/BQ-KS-disco-OC-CC_Ryan.docx", - "outputFilename": "bq_ks_disco_oc_cc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "bq_ks_disco_oc_deficiency", - "label": "Discovery / BQ-KS-disco-OC-Deficiency", - "template": "legacy/Discovery/BQ-KS-disco-OC-Deficiency.docx", - "outputFilename": "bq_ks_disco_oc_deficiency_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "bq_ks_disco_oc_deficiency_ryan", - "label": "Discovery / BQ-KS-disco-OC-Deficiency Ryan", - "template": "legacy/Discovery/BQ-KS-disco-OC-Deficiency_Ryan.docx", - "outputFilename": "bq_ks_disco_oc_deficiency_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "bq_mo_disco_db_cc", - "label": "Discovery / BQ-MO-disco-DB-CC", - "template": "legacy/Discovery/BQ-MO-disco-DB-CC.docx", - "outputFilename": "bq_mo_disco_db_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "bq_mo_disco_oc_cc", - "label": "Discovery / BQ-MO-disco-OC-CC", - "template": "legacy/Discovery/BQ-MO-disco-OC-CC.docx", - "outputFilename": "bq_mo_disco_oc_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "berman_rabin_mo_oc_cc", - "label": "Discovery / Berman-Rabin MO-OC-CC", - "template": "legacy/Discovery/Berman-Rabin_MO-OC-CC.docx", - "outputFilename": "berman_rabin_mo_oc_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "berman_rabin_mo_oc_loan_disco", - "label": "Discovery / Berman-Rabin MO-OC-Loan-disco", - "template": "legacy/Discovery/Berman-Rabin_MO-OC-Loan-disco.docx", - "outputFilename": "berman_rabin_mo_oc_loan_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittks_db_cc_disco_rfas", - "label": "Discovery / BlittKS-DB-CC-disco-RFAs", - "template": "legacy/Discovery/BlittKS-DB-CC-disco-RFAs.docx", - "outputFilename": "blittks_db_cc_disco_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittks_db_cc_disco_rfas_ryan", - "label": "Discovery / BlittKS-DB-CC-disco-RFAs Ryan", - "template": "legacy/Discovery/BlittKS-DB-CC-disco-RFAs_Ryan.docx", - "outputFilename": "blittks_db_cc_disco_rfas_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittks_db_cc_disco", - "label": "Discovery / BlittKS-DB-CC-disco", - "template": "legacy/Discovery/BlittKS-DB-CC-disco.docx", - "outputFilename": "blittks_db_cc_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittks_db_cc_disco_ryan", - "label": "Discovery / BlittKS-DB-CC-disco Ryan", - "template": "legacy/Discovery/BlittKS-DB-CC-disco_Ryan.docx", - "outputFilename": "blittks_db_cc_disco_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittks_oc_cc_disco_rfas", - "label": "Discovery / BlittKS-OC-CC-disco-RFAs", - "template": "legacy/Discovery/BlittKS-OC-CC-disco-RFAs.docx", - "outputFilename": "blittks_oc_cc_disco_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittks_oc_cc_disco_rfas_ryan", - "label": "Discovery / BlittKS-OC-CC-disco-RFAs Ryan", - "template": "legacy/Discovery/BlittKS-OC-CC-disco-RFAs_Ryan.docx", - "outputFilename": "blittks_oc_cc_disco_rfas_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittks_disco_copy", - "label": "Discovery / BlittKS-disco - Copy", - "template": "legacy/Discovery/BlittKS-disco - Copy.docx", - "outputFilename": "blittks_disco_copy_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittks_disco", - "label": "Discovery / BlittKS-disco", - "template": "legacy/Discovery/BlittKS-disco.docx", - "outputFilename": "blittks_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittks_disco_ryan", - "label": "Discovery / BlittKS-disco Ryan", - "template": "legacy/Discovery/BlittKS-disco_Ryan.docx", - "outputFilename": "blittks_disco_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittmo_db_cc_disco_rfas", - "label": "Discovery / BlittMO-DB-CC-disco-RFAs", - "template": "legacy/Discovery/BlittMO-DB-CC-disco-RFAs.docx", - "outputFilename": "blittmo_db_cc_disco_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittmo_db_cc_disco", - "label": "Discovery / BlittMO-DB-CC-disco", - "template": "legacy/Discovery/BlittMO-DB-CC-disco.docx", - "outputFilename": "blittmo_db_cc_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittmo_db_disco", - "label": "Discovery / BlittMO-DB-disco", - "template": "legacy/Discovery/BlittMO-DB-disco.docx", - "outputFilename": "blittmo_db_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittmo_oc_cc_disco", - "label": "Discovery / BlittMO-OC-CC-disco", - "template": "legacy/Discovery/BlittMO-OC-CC-disco.docx", - "outputFilename": "blittmo_oc_cc_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittmo_disco_db_loan_draft", - "label": "Discovery / BlittMO-disco-DB-Loan-DRAFT", - "template": "legacy/Discovery/BlittMO-disco-DB-Loan-DRAFT.docx", - "outputFilename": "blittmo_disco_db_loan_draft_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittmo_disco_db_loan_rfas", - "label": "Discovery / BlittMO-disco-DB-Loan-RFAs", - "template": "legacy/Discovery/BlittMO-disco-DB-Loan-RFAs.docx", - "outputFilename": "blittmo_disco_db_loan_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "blittmo_disco", - "label": "Discovery / BlittMO-disco", - "template": "legacy/Discovery/BlittMO-disco.docx", - "outputFilename": "blittmo_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "burns_walsh_ks_db_cc", - "label": "Discovery / Burns-Walsh-KS-DB-CC", - "template": "legacy/Discovery/Burns-Walsh-KS-DB-CC.docx", - "outputFilename": "burns_walsh_ks_db_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "burns_walsh_ks_db_cc_ryan", - "label": "Discovery / Burns-Walsh-KS-DB-CC Ryan", - "template": "legacy/Discovery/Burns-Walsh-KS-DB-CC_Ryan.docx", - "outputFilename": "burns_walsh_ks_db_cc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "couch_lambert_ks_oc_cc", - "label": "Discovery / Couch-Lambert KS-OC-CC", - "template": "legacy/Discovery/Couch-Lambert_KS-OC-CC.docx", - "outputFilename": "couch_lambert_ks_oc_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "couch_lambert_ks_oc_cc_ryan", - "label": "Discovery / Couch-Lambert KS-OC-CC Ryan", - "template": "legacy/Discovery/Couch-Lambert_KS-OC-CC_Ryan.docx", - "outputFilename": "couch_lambert_ks_oc_cc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "couch_lambert_mo_oc_cc", - "label": "Discovery / Couch-Lambert MO-OC-CC", - "template": "legacy/Discovery/Couch-Lambert_MO-OC-CC.docx", - "outputFilename": "couch_lambert_mo_oc_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "disco_example_responses", - "label": "Discovery / Disco-Example-Responses", - "template": "legacy/Discovery/Disco-Example-Responses.docx", - "outputFilename": "disco_example_responses_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "discovery_to_plaintiff", - "label": "Discovery / Discovery-to-Plaintiff", - "template": "legacy/Discovery/Discovery-to-Plaintiff.docx", - "outputFilename": "discovery_to_plaintiff_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "discovery_to_plaintiff_balance_inquiry", - "label": "Discovery / Discovery-to-Plaintiff Balance-Inquiry", - "template": "legacy/Discovery/Discovery-to-Plaintiff_Balance-Inquiry.docx", - "outputFilename": "discovery_to_plaintiff_balance_inquiry_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "discovery_to_plaintiff_debt_buyer_balance_inquiry_rogs_rpds_pdf", - "label": "Discovery / Discovery-to-Plaintiff Debt-buyer-Balance-Inquiry ROGs RPDs.pdf", - "template": "legacy/Discovery/Discovery-to-Plaintiff_Debt-buyer-Balance-Inquiry_ROGs_RPDs.pdf.docx", - "outputFilename": "discovery_to_plaintiff_debt_buyer_balance_inquiry_rogs_rpds_pdf_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "discovery_to_plaintiff_rogs_rpds", - "label": "Discovery / Discovery-to-Plaintiff ROGs-RPDs", - "template": "legacy/Discovery/Discovery-to-Plaintiff_ROGs-RPDs.docx", - "outputFilename": "discovery_to_plaintiff_rogs_rpds_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "discovery_to_plaintiff_rogs_rpds_westlake_mo", - "label": "Discovery / Discovery-to-Plaintiff ROGs-RPDs Westlake MO", - "template": "legacy/Discovery/Discovery-to-Plaintiff_ROGs-RPDs_Westlake_MO.docx", - "outputFilename": "discovery_to_plaintiff_rogs_rpds_westlake_mo_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "faber_brand_mo_db_auto_deficiency_rfas", - "label": "Discovery / Faber-Brand-MO-DB-Auto-Deficiency-RFAs", - "template": "legacy/Discovery/Faber-Brand-MO-DB-Auto-Deficiency-RFAs.docx", - "outputFilename": "faber_brand_mo_db_auto_deficiency_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "faber_brand_mo_db_loan_rfas", - "label": "Discovery / Faber-Brand-MO-DB-Loan-RFAs", - "template": "legacy/Discovery/Faber-Brand-MO-DB-Loan-RFAs.docx", - "outputFilename": "faber_brand_mo_db_loan_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "faber_brand_mo_db_loan", - "label": "Discovery / Faber-Brand-MO-DB-Loan", - "template": "legacy/Discovery/Faber-Brand-MO-DB-Loan.docx", - "outputFilename": "faber_brand_mo_db_loan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "kf_ks_oc_cc", - "label": "Discovery / KF-KS-OC-CC", - "template": "legacy/Discovery/KF-KS-OC-CC.docx", - "outputFilename": "kf_ks_oc_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "kf_ks_oc_cc_ryan", - "label": "Discovery / KF-KS-OC-CC Ryan", - "template": "legacy/Discovery/KF-KS-OC-CC_Ryan.docx", - "outputFilename": "kf_ks_oc_cc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mandarich_ks_disco_db", - "label": "Discovery / Mandarich-KS-disco-DB", - "template": "legacy/Discovery/Mandarich-KS-disco-DB.docx", - "outputFilename": "mandarich_ks_disco_db_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mandarich_ks_disco_db_ryan", - "label": "Discovery / Mandarich-KS-disco-DB Ryan", - "template": "legacy/Discovery/Mandarich-KS-disco-DB_Ryan.docx", - "outputFilename": "mandarich_ks_disco_db_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mandarich_ks_disco_oc", - "label": "Discovery / Mandarich-KS-disco-OC", - "template": "legacy/Discovery/Mandarich-KS-disco-OC.docx", - "outputFilename": "mandarich_ks_disco_oc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mandarich_ks_disco_oc_ryan", - "label": "Discovery / Mandarich-KS-disco-OC Ryan", - "template": "legacy/Discovery/Mandarich-KS-disco-OC_Ryan.docx", - "outputFilename": "mandarich_ks_disco_oc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mandarich_mo_disco", - "label": "Discovery / Mandarich-MO-disco", - "template": "legacy/Discovery/Mandarich-MO-disco.docx", - "outputFilename": "mandarich_mo_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pra_ks_disco", - "label": "Discovery / PRA-KS-disco", - "template": "legacy/Discovery/PRA-KS-disco.docx", - "outputFilename": "pra_ks_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pra_ks_disco_ryan", - "label": "Discovery / PRA-KS-disco Ryan", - "template": "legacy/Discovery/PRA-KS-disco_Ryan.docx", - "outputFilename": "pra_ks_disco_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pra_ks_disco_w_o_signature", - "label": "Discovery / PRA-KS-disco w-o-Signature", - "template": "legacy/Discovery/PRA-KS-disco_w-o-Signature.docx", - "outputFilename": "pra_ks_disco_w_o_signature_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pra_ks_disco_w_o_signature_ryan", - "label": "Discovery / PRA-KS-disco w-o-Signature Ryan", - "template": "legacy/Discovery/PRA-KS-disco_w-o-Signature_Ryan.docx", - "outputFilename": "pra_ks_disco_w_o_signature_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pra_mo_disco", - "label": "Discovery / PRA-MO-disco", - "template": "legacy/Discovery/PRA-MO-disco.docx", - "outputFilename": "pra_mo_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pra_disco", - "label": "Discovery / PRA-disco", - "template": "legacy/Discovery/PRA-disco.docx", - "outputFilename": "pra_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pappas_ks_db_disco", - "label": "Discovery / Pappas-KS-DB-disco", - "template": "legacy/Discovery/Pappas-KS-DB-disco.docx", - "outputFilename": "pappas_ks_db_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pappas_ks_db_disco_ryan", - "label": "Discovery / Pappas-KS-DB-disco Ryan", - "template": "legacy/Discovery/Pappas-KS-DB-disco_Ryan.docx", - "outputFilename": "pappas_ks_db_disco_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pappas_ks_loan_oc", - "label": "Discovery / Pappas-KS-Loan-OC", - "template": "legacy/Discovery/Pappas-KS-Loan-OC.docx", - "outputFilename": "pappas_ks_loan_oc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pappas_ks_loan_oc_ryan", - "label": "Discovery / Pappas-KS-Loan-OC Ryan", - "template": "legacy/Discovery/Pappas-KS-Loan-OC_Ryan.docx", - "outputFilename": "pappas_ks_loan_oc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pappas_ks_oc_disco", - "label": "Discovery / Pappas-KS-OC-disco", - "template": "legacy/Discovery/Pappas-KS-OC-disco.docx", - "outputFilename": "pappas_ks_oc_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pappas_ks_oc_disco_ryan", - "label": "Discovery / Pappas-KS-OC-disco Ryan", - "template": "legacy/Discovery/Pappas-KS-OC-disco_Ryan.docx", - "outputFilename": "pappas_ks_oc_disco_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pappas_mo_db_consumer_installment_loan_disco", - "label": "Discovery / Pappas-MO-DB-Consumer-Installment-Loan-disco", - "template": "legacy/Discovery/Pappas-MO-DB-Consumer-Installment-Loan-disco.docx", - "outputFilename": "pappas_mo_db_consumer_installment_loan_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pappas_mo_db_disco", - "label": "Discovery / Pappas-MO-DB-disco", - "template": "legacy/Discovery/Pappas-MO-DB-disco.docx", - "outputFilename": "pappas_mo_db_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "pappas_mo_oc_disco", - "label": "Discovery / Pappas-MO-OC-disco", - "template": "legacy/Discovery/Pappas-MO-OC-disco.docx", - "outputFilename": "pappas_mo_oc_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "southlaw_mo_oc_disco", - "label": "Discovery / Southlaw-MO-OC-disco", - "template": "legacy/Discovery/Southlaw-MO-OC-disco.docx", - "outputFilename": "southlaw_mo_oc_disco_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "annual_credit_report_request_envelope", - "label": "Letters / Annual-Credit-Report-Request-Envelope", - "template": "legacy/Letters/Annual-Credit-Report-Request-Envelope.docx", - "outputFilename": "annual_credit_report_request_envelope_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "annual_credit_report_request_form", - "label": "Letters / Annual-Credit-Report-Request-Form", - "template": "legacy/Letters/Annual-Credit-Report-Request-Form.docx", - "outputFilename": "annual_credit_report_request_form_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "envelope_client", - "label": "Letters / Envelope Client", - "template": "legacy/Letters/Envelope_Client.docx", - "outputFilename": "envelope_client_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "envelope_client_without_sender", - "label": "Letters / Envelope Client without Sender", - "template": "legacy/Letters/Envelope_Client_without_Sender.docx", - "outputFilename": "envelope_client_without_sender_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "envelope_oc", - "label": "Letters / Envelope OC", - "template": "legacy/Letters/Envelope_OC.docx", - "outputFilename": "envelope_oc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "intake_cover_letter_james", - "label": "Letters / Intake-Cover-Letter James", - "template": "legacy/Letters/Intake-Cover-Letter_James.docx", - "outputFilename": "intake_cover_letter_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "intake_cover_letter_ryan", - "label": "Letters / Intake-Cover-Letter Ryan", - "template": "legacy/Letters/Intake-Cover-Letter_Ryan.docx", - "outputFilename": "intake_cover_letter_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "intake_case_expectations_long", - "label": "Letters / Intake case-expectations-long", - "template": "legacy/Letters/Intake_case-expectations-long.docx", - "outputFilename": "intake_case_expectations_long_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "intake_case_expectations", - "label": "Letters / Intake case-expectations", - "template": "legacy/Letters/Intake_case-expectations.docx", - "outputFilename": "intake_case_expectations_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "intake_general_information", - "label": "Letters / Intake general-information", - "template": "legacy/Letters/Intake_general-information.docx", - "outputFilename": "intake_general_information_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "intake_welcome_letter", - "label": "Letters / Intake welcome-letter", - "template": "legacy/Letters/Intake_welcome-letter.docx", - "outputFilename": "intake_welcome_letter_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "post_judgment_garnishment_notice_james", - "label": "Letters / Post-Judgment Garnishment-Notice James", - "template": "legacy/Letters/Post-Judgment_Garnishment-Notice_James.docx", - "outputFilename": "post_judgment_garnishment_notice_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "post_judgment_garnishment_notice_ryan", - "label": "Letters / Post-Judgment Garnishment-Notice Ryan", - "template": "legacy/Letters/Post-Judgment_Garnishment-Notice_Ryan.docx", - "outputFilename": "post_judgment_garnishment_notice_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "post_judgment_missed_payment_james", - "label": "Letters / Post-Judgment Missed-Payment James", - "template": "legacy/Letters/Post-Judgment_Missed-Payment_James.docx", - "outputFilename": "post_judgment_missed_payment_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "post_judgment_missed_payment_ryan", - "label": "Letters / Post-Judgment Missed-Payment Ryan", - "template": "legacy/Letters/Post-Judgment_Missed-Payment_Ryan.docx", - "outputFilename": "post_judgment_missed_payment_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "post_judgment_returned_check_james", - "label": "Letters / Post-Judgment Returned-Check James", - "template": "legacy/Letters/Post-Judgment_Returned-Check_James.docx", - "outputFilename": "post_judgment_returned_check_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "post_judgment_returned_check_ryan", - "label": "Letters / Post-Judgment Returned-Check Ryan", - "template": "legacy/Letters/Post-Judgment_Returned-Check_Ryan.docx", - "outputFilename": "post_judgment_returned_check_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "authorization_disclosure_no_payment", - "label": "Letters / authorization-disclosure-no-payment", - "template": "legacy/Letters/authorization-disclosure-no-payment.docx", - "outputFilename": "authorization_disclosure_no_payment_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "authorization_disclosure", - "label": "Letters / authorization-disclosure", - "template": "legacy/Letters/authorization-disclosure.docx", - "outputFilename": "authorization_disclosure_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_cj_information_sheet", - "label": "Letters / closeout CJ Information-Sheet", - "template": "legacy/Letters/closeout_CJ_Information-Sheet.docx", - "outputFilename": "closeout_cj_information_sheet_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_cj_ryan", - "label": "Letters / closeout CJ Ryan", - "template": "legacy/Letters/closeout_CJ_Ryan.docx", - "outputFilename": "closeout_cj_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_cj_with_interest_costs", - "label": "Letters / closeout CJ with-interest-costs", - "template": "legacy/Letters/closeout_CJ_with-interest-costs.docx", - "outputFilename": "closeout_cj_with_interest_costs_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_db_by_court_james", - "label": "Letters / closeout DWOP-DB-by-Court James", - "template": "legacy/Letters/closeout_DWOP-DB-by-Court_James.docx", - "outputFilename": "closeout_dwop_db_by_court_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_db_by_court_ryan", - "label": "Letters / closeout DWOP-DB-by-Court Ryan", - "template": "legacy/Letters/closeout_DWOP-DB-by-Court_Ryan.docx", - "outputFilename": "closeout_dwop_db_by_court_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_db_by_court_without_enclosures_james", - "label": "Letters / closeout DWOP-DB-by-Court without-enclosures James", - "template": "legacy/Letters/closeout_DWOP-DB-by-Court_without-enclosures_James.docx", - "outputFilename": "closeout_dwop_db_by_court_without_enclosures_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_db_by_court_without_enclosures_ryan", - "label": "Letters / closeout DWOP-DB-by-Court without-enclosures Ryan", - "template": "legacy/Letters/closeout_DWOP-DB-by-Court_without-enclosures_Ryan.docx", - "outputFilename": "closeout_dwop_db_by_court_without_enclosures_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_db_james", - "label": "Letters / closeout DWOP-DB James", - "template": "legacy/Letters/closeout_DWOP-DB_James.docx", - "outputFilename": "closeout_dwop_db_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_db_ryan", - "label": "Letters / closeout DWOP-DB Ryan", - "template": "legacy/Letters/closeout_DWOP-DB_Ryan.docx", - "outputFilename": "closeout_dwop_db_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_hardship_james", - "label": "Letters / closeout DWOP-Hardship James", - "template": "legacy/Letters/closeout_DWOP-Hardship_James.docx", - "outputFilename": "closeout_dwop_hardship_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_hardship_ryan", - "label": "Letters / closeout DWOP-Hardship Ryan", - "template": "legacy/Letters/closeout_DWOP-Hardship_Ryan.docx", - "outputFilename": "closeout_dwop_hardship_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_oc_by_court_james", - "label": "Letters / closeout DWOP-OC-by-Court James", - "template": "legacy/Letters/closeout_DWOP-OC-by-Court_James.docx", - "outputFilename": "closeout_dwop_oc_by_court_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_oc_by_court_ryan", - "label": "Letters / closeout DWOP-OC-by-Court Ryan", - "template": "legacy/Letters/closeout_DWOP-OC-by-Court_Ryan.docx", - "outputFilename": "closeout_dwop_oc_by_court_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_oc_by_court_without_enclosures_james", - "label": "Letters / closeout DWOP-OC-by-Court without-enclosures James", - "template": "legacy/Letters/closeout_DWOP-OC-by-Court_without-enclosures_James.docx", - "outputFilename": "closeout_dwop_oc_by_court_without_enclosures_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_oc_by_court_without_enclosures_ryan", - "label": "Letters / closeout DWOP-OC-by-Court without-enclosures Ryan", - "template": "legacy/Letters/closeout_DWOP-OC-by-Court_without-enclosures_Ryan.docx", - "outputFilename": "closeout_dwop_oc_by_court_without_enclosures_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_trial_james", - "label": "Letters / closeout DWOP-Trial James", - "template": "legacy/Letters/closeout_DWOP-Trial_James.docx", - "outputFilename": "closeout_dwop_trial_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_trial_ryan", - "label": "Letters / closeout DWOP-Trial Ryan", - "template": "legacy/Letters/closeout_DWOP-Trial_Ryan.docx", - "outputFilename": "closeout_dwop_trial_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_generic_james", - "label": "Letters / closeout DWOP-generic James", - "template": "legacy/Letters/closeout_DWOP-generic_James.docx", - "outputFilename": "closeout_dwop_generic_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_generic_ryan", - "label": "Letters / closeout DWOP-generic Ryan", - "template": "legacy/Letters/closeout_DWOP-generic_Ryan.docx", - "outputFilename": "closeout_dwop_generic_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_james", - "label": "Letters / closeout DWOP James", - "template": "legacy/Letters/closeout_DWOP_James.docx", - "outputFilename": "closeout_dwop_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwop_ryan", - "label": "Letters / closeout DWOP Ryan", - "template": "legacy/Letters/closeout_DWOP_Ryan.docx", - "outputFilename": "closeout_dwop_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwp_james", - "label": "Letters / closeout DWP James", - "template": "legacy/Letters/closeout_DWP_James.docx", - "outputFilename": "closeout_dwp_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_dwp_ryan", - "label": "Letters / closeout DWP Ryan", - "template": "legacy/Letters/closeout_DWP_Ryan.docx", - "outputFilename": "closeout_dwp_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_fcra_notice_cj", - "label": "Letters / closeout FCRA-Notice-CJ", - "template": "legacy/Letters/closeout_FCRA-Notice-CJ.docx", - "outputFilename": "closeout_fcra_notice_cj_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_fcra_notice_rule_17", - "label": "Letters / closeout FCRA-Notice-Rule-17", - "template": "legacy/Letters/closeout_FCRA-Notice-Rule-17.docx", - "outputFilename": "closeout_fcra_notice_rule_17_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_mo_traffic_ticket_james", - "label": "Letters / closeout MO-Traffic-Ticket James", - "template": "legacy/Letters/closeout_MO-Traffic-Ticket_James.docx", - "outputFilename": "closeout_mo_traffic_ticket_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_mo_traffic_ticket_ryan", - "label": "Letters / closeout MO-Traffic-Ticket Ryan", - "template": "legacy/Letters/closeout_MO-Traffic-Ticket_Ryan.docx", - "outputFilename": "closeout_mo_traffic_ticket_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_pra_mutual_release_james", - "label": "Letters / closeout PRA-Mutual-Release James", - "template": "legacy/Letters/closeout_PRA-Mutual-Release_James.docx", - "outputFilename": "closeout_pra_mutual_release_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_pra_mutual_release_ryan", - "label": "Letters / closeout PRA-Mutual-Release Ryan", - "template": "legacy/Letters/closeout_PRA-Mutual-Release_Ryan.docx", - "outputFilename": "closeout_pra_mutual_release_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_rule_17_james", - "label": "Letters / closeout Rule-17 James", - "template": "legacy/Letters/closeout_Rule-17_James.docx", - "outputFilename": "closeout_rule_17_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_rule_17_ryan", - "label": "Letters / closeout Rule-17 Ryan", - "template": "legacy/Letters/closeout_Rule-17_Ryan.docx", - "outputFilename": "closeout_rule_17_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_settlement_payment_dwp_no_due_date_james", - "label": "Letters / closeout Settlement-Payment-DWP-no-due-date James", - "template": "legacy/Letters/closeout_Settlement-Payment-DWP-no-due-date_James.docx", - "outputFilename": "closeout_settlement_payment_dwp_no_due_date_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_settlement_payment_dwp_no_due_date_ryan", - "label": "Letters / closeout Settlement-Payment-DWP-no-due-date Ryan", - "template": "legacy/Letters/closeout_Settlement-Payment-DWP-no-due-date_Ryan.docx", - "outputFilename": "closeout_settlement_payment_dwp_no_due_date_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_settlement_payment_dwp_james", - "label": "Letters / closeout Settlement-Payment-DWP James", - "template": "legacy/Letters/closeout_Settlement-Payment-DWP_James.docx", - "outputFilename": "closeout_settlement_payment_dwp_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_settlement_payment_dwp_ryan", - "label": "Letters / closeout Settlement-Payment-DWP Ryan", - "template": "legacy/Letters/closeout_Settlement-Payment-DWP_Ryan.docx", - "outputFilename": "closeout_settlement_payment_dwp_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_settlement_payment_mutual_release_dwp_james", - "label": "Letters / closeout Settlement-Payment-Mutual-Release-DWP James", - "template": "legacy/Letters/closeout_Settlement-Payment-Mutual-Release-DWP_James.docx", - "outputFilename": "closeout_settlement_payment_mutual_release_dwp_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "closeout_settlement_payment_mutual_release_dwp_ryan", - "label": "Letters / closeout Settlement-Payment-Mutual-Release-DWP Ryan", - "template": "legacy/Letters/closeout_Settlement-Payment-Mutual-Release-DWP_Ryan.docx", - "outputFilename": "closeout_settlement_payment_mutual_release_dwp_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "payment_receipt_ryan", - "label": "Letters / payment-receipt Ryan", - "template": "legacy/Letters/payment-receipt_Ryan.docx", - "outputFilename": "payment_receipt_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "representation_termination_james", - "label": "Letters / representation-termination James", - "template": "legacy/Letters/representation-termination_James.docx", - "outputFilename": "representation_termination_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "representation_termination_ryan", - "label": "Letters / representation-termination Ryan", - "template": "legacy/Letters/representation-termination_Ryan.docx", - "outputFilename": "representation_termination_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "unable_to_contact_james", - "label": "Letters / unable-to-contact James", - "template": "legacy/Letters/unable-to-contact_James.docx", - "outputFilename": "unable_to_contact_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "unable_to_contact_ryan", - "label": "Letters / unable-to-contact Ryan", - "template": "legacy/Letters/unable-to-contact_Ryan.docx", - "outputFilename": "unable_to_contact_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_answer_account_stated_db", - "label": "Pleadings / KS Answer-Account-Stated-DB", - "template": "legacy/Pleadings/KS_Answer-Account-Stated-DB.docx", - "outputFilename": "ks_answer_account_stated_db_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_answer", - "label": "Pleadings / KS Answer", + "id": "answers_pleadings_ks_answer", + "category": "answers", + "label": "pleadings / Kansas answer", "template": "legacy/Pleadings/KS_Answer.docx", - "outputFilename": "ks_answer_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "answers_pleadings_ks_answer_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "ks_answer_account_stated_oc", - "label": "Pleadings / KS Answer Account-Stated-OC", + "id": "answers_pleadings_ks_answer_account_stated_db", + "category": "answers", + "label": "pleadings / Kansas answer account stated db", + "template": "legacy/Pleadings/KS_Answer-Account-Stated-DB.docx", + "outputFilename": "answers_pleadings_ks_answer_account_stated_db_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "answers_pleadings_ks_answer_account_stated_opposing_counsel", + "category": "answers", + "label": "pleadings / Kansas answer account stated opposing counsel", "template": "legacy/Pleadings/KS_Answer_Account-Stated-OC.docx", - "outputFilename": "ks_answer_account_stated_oc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "answers_pleadings_ks_answer_account_stated_opposing_counsel_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "ks_eoa_ryan", - "label": "Pleadings / KS EoA-Ryan", - "template": "legacy/Pleadings/KS_EoA-Ryan.docx", - "outputFilename": "ks_eoa_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_joco_motion_to_withdraw", - "label": "Pleadings / KS JOCO Motion-to-Withdraw", - "template": "legacy/Pleadings/KS_JOCO_Motion-to-Withdraw.docx", - "outputFilename": "ks_joco_motion_to_withdraw_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_journal_entry_dwop", - "label": "Pleadings / KS Journal-Entry-DWOP", - "template": "legacy/Pleadings/KS_Journal-Entry-DWOP.docx", - "outputFilename": "ks_journal_entry_dwop_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_msaj", - "label": "Pleadings / KS MSAJ", - "template": "legacy/Pleadings/KS_MSAJ.docx", - "outputFilename": "ks_msaj_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_motion_to_file_out_of_time", - "label": "Pleadings / KS Motion-to-File-Out-of-Time", - "template": "legacy/Pleadings/KS_Motion-to-File-Out-of-Time.docx", - "outputFilename": "ks_motion_to_file_out_of_time_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_motion_to_withdraw", - "label": "Pleadings / KS Motion-to-Withdraw", - "template": "legacy/Pleadings/KS_Motion-to-Withdraw.docx", - "outputFilename": "ks_motion_to_withdraw_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_noh", - "label": "Pleadings / KS NoH", - "template": "legacy/Pleadings/KS_NoH.docx", - "outputFilename": "ks_noh_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_response_to_msj_late_response_auto_deficiency_blitt", - "label": "Pleadings / KS Response-to-MSJ Late-Response Auto-Deficiency-Blitt", - "template": "legacy/Pleadings/KS_Response-to-MSJ_Late-Response_Auto-Deficiency-Blitt.docx", - "outputFilename": "ks_response_to_msj_late_response_auto_deficiency_blitt_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_response_to_msj_late_responses_blitt", - "label": "Pleadings / KS Response-to-MSJ Late-Responses-Blitt", - "template": "legacy/Pleadings/KS_Response-to-MSJ_Late-Responses-Blitt.docx", - "outputFilename": "ks_response_to_msj_late_responses_blitt_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "ks_service_waiver", - "label": "Pleadings / KS Service Waiver", - "template": "legacy/Pleadings/KS_Service_Waiver.docx", - "outputFilename": "ks_service_waiver_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mo_ads_account_stated_credit_card_db", - "label": "Pleadings / MO ADs Account-Stated Credit-Card DB", - "template": "legacy/Pleadings/MO_ADs_Account-Stated_Credit-Card_DB.docx", - "outputFilename": "mo_ads_account_stated_credit_card_db_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mo_ads_account_stated_credit_card_oc", - "label": "Pleadings / MO ADs Account-Stated Credit-Card OC", - "template": "legacy/Pleadings/MO_ADs_Account-Stated_Credit-Card_OC.docx", - "outputFilename": "mo_ads_account_stated_credit_card_oc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mo_ads_account_stated_medical_oc", - "label": "Pleadings / MO ADs Account-Stated Medical OC", - "template": "legacy/Pleadings/MO_ADs_Account-Stated_Medical_OC.docx", - "outputFilename": "mo_ads_account_stated_medical_oc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mo_ads_breach_of_contract_auto_deficiency_oc", - "label": "Pleadings / MO ADs Breach-of-Contract Auto-Deficiency OC", - "template": "legacy/Pleadings/MO_ADs_Breach-of-Contract_Auto-Deficiency_OC.docx", - "outputFilename": "mo_ads_breach_of_contract_auto_deficiency_oc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mo_ads_breach_of_contract_credit_card_oc", - "label": "Pleadings / MO ADs Breach-of-Contract Credit-Card OC", - "template": "legacy/Pleadings/MO_ADs_Breach-of-Contract_Credit-Card_OC.docx", - "outputFilename": "mo_ads_breach_of_contract_credit_card_oc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mo_ads_breach_of_contract_payday", - "label": "Pleadings / MO ADs Breach-of-Contract Payday", - "template": "legacy/Pleadings/MO_ADs_Breach-of-Contract_Payday.docx", - "outputFilename": "mo_ads_breach_of_contract_payday_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mo_ads_breach_of_contract_promissory_note_db", - "label": "Pleadings / MO ADs Breach-of-Contract Promissory-Note DB", - "template": "legacy/Pleadings/MO_ADs_Breach-of-Contract_Promissory-Note_DB.docx", - "outputFilename": "mo_ads_breach_of_contract_promissory_note_db_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mo_ads_breach_of_contract_promissory_note_oc", - "label": "Pleadings / MO ADs Breach-of-Contract Promissory-Note OC", - "template": "legacy/Pleadings/MO_ADs_Breach-of-Contract_Promissory-Note_OC.docx", - "outputFilename": "mo_ads_breach_of_contract_promissory_note_oc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "mo_answer_ads_account_stated_credit_card_oc", - "label": "Pleadings / MO Answer-ADs Account-Stated Credit-Card OC", + "id": "answers_pleadings_mo_answer_ads_account_stated_credit_card_opposing_counsel", + "category": "answers", + "label": "pleadings / Missouri answer ads account stated credit card opposing counsel", "template": "legacy/Pleadings/MO_Answer-ADs_Account-Stated_Credit-Card_OC.docx", - "outputFilename": "mo_answer_ads_account_stated_credit_card_oc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "answers_pleadings_mo_answer_ads_account_stated_credit_card_opposing_counsel_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_joint_msaj", - "label": "Pleadings / MO Joint-MSAJ", - "template": "legacy/Pleadings/MO_Joint-MSAJ.docx", - "outputFilename": "mo_joint_msaj_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "client_letters_envelope_client", + "category": "client", + "label": "letters / envelope client", + "template": "legacy/Letters/Envelope_Client.docx", + "outputFilename": "client_letters_envelope_client_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_joint_motion_order_to_continue_hearing", - "label": "Pleadings / MO Joint-Motion-Order-to-Continue-Hearing", - "template": "legacy/Pleadings/MO_Joint-Motion-Order-to-Continue-Hearing.docx", - "outputFilename": "mo_joint_motion_order_to_continue_hearing_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "client_letters_envelope_client_without_sender", + "category": "client", + "label": "letters / envelope client without sender", + "template": "legacy/Letters/Envelope_Client_without_Sender.docx", + "outputFilename": "client_letters_envelope_client_without_sender_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_joint_motion_order_to_continue_trial", - "label": "Pleadings / MO Joint-Motion-Order-to-Continue-Trial", - "template": "legacy/Pleadings/MO_Joint-Motion-Order-to-Continue-Trial.docx", - "outputFilename": "mo_joint_motion_order_to_continue_trial_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "client_pleadings_mo_ads_breach_of_contract_auto_deficiency_opposing_counsel", + "category": "client", + "label": "pleadings / Missouri ads breach of contract auto deficiency opposing counsel", + "template": "legacy/Pleadings/MO_ADs_Breach-of-Contract_Auto-Deficiency_OC.docx", + "outputFilename": "client_pleadings_mo_ads_breach_of_contract_auto_deficiency_opposing_counsel_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_joint_motion_to_continue_hearing", - "label": "Pleadings / MO Joint-Motion-to-Continue-Hearing", - "template": "legacy/Pleadings/MO_Joint-Motion-to-Continue-Hearing.docx", - "outputFilename": "mo_joint_motion_to_continue_hearing_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "client_pleadings_mo_ads_breach_of_contract_credit_card_opposing_counsel", + "category": "client", + "label": "pleadings / Missouri ads breach of contract credit card opposing counsel", + "template": "legacy/Pleadings/MO_ADs_Breach-of-Contract_Credit-Card_OC.docx", + "outputFilename": "client_pleadings_mo_ads_breach_of_contract_credit_card_opposing_counsel_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_joint_motion_to_continue_trial", - "label": "Pleadings / MO Joint-Motion-to-Continue-Trial", - "template": "legacy/Pleadings/MO_Joint-Motion-to-Continue-Trial.docx", - "outputFilename": "mo_joint_motion_to_continue_trial_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "client_pleadings_mo_ads_breach_of_contract_payday", + "category": "client", + "label": "pleadings / Missouri ads breach of contract payday", + "template": "legacy/Pleadings/MO_ADs_Breach-of-Contract_Payday.docx", + "outputFilename": "client_pleadings_mo_ads_breach_of_contract_payday_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_msaj", - "label": "Pleadings / MO MSAJ", - "template": "legacy/Pleadings/MO_MSAJ.docx", - "outputFilename": "mo_msaj_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "client_pleadings_mo_ads_breach_of_contract_promissory_note_db", + "category": "client", + "label": "pleadings / Missouri ads breach of contract promissory note db", + "template": "legacy/Pleadings/MO_ADs_Breach-of-Contract_Promissory-Note_DB.docx", + "outputFilename": "client_pleadings_mo_ads_breach_of_contract_promissory_note_db_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_motion_to_file_out_of_time", - "label": "Pleadings / MO Motion-to-File-Out-of-Time", - "template": "legacy/Pleadings/MO_Motion-to-File-Out-of-Time.docx", - "outputFilename": "mo_motion_to_file_out_of_time_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "client_pleadings_mo_ads_breach_of_contract_promissory_note_opposing_counsel", + "category": "client", + "label": "pleadings / Missouri ads breach of contract promissory note opposing counsel", + "template": "legacy/Pleadings/MO_ADs_Breach-of-Contract_Promissory-Note_OC.docx", + "outputFilename": "client_pleadings_mo_ads_breach_of_contract_promissory_note_opposing_counsel_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_motion_to_quash_garnishment_exempt_income", - "label": "Pleadings / MO Motion-to-Quash-Garnishment-Exempt-Income", - "template": "legacy/Pleadings/MO_Motion-to-Quash-Garnishment-Exempt-Income.docx", - "outputFilename": "mo_motion_to_quash_garnishment_exempt_income_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_abbot_osborn_jacobs_missouri_db_discovery", + "category": "discovery", + "label": "discovery / abbot osborn jacobs Missouri db discovery", + "template": "legacy/Discovery/Abbot-Osborn-Jacobs_MO-DB-disco.docx", + "outputFilename": "discovery_discovery_abbot_osborn_jacobs_missouri_db_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_motion_to_quash_garnishment", - "label": "Pleadings / MO Motion-to-Quash-Garnishment", - "template": "legacy/Pleadings/MO_Motion-to-Quash-Garnishment.docx", - "outputFilename": "mo_motion_to_quash_garnishment_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_allen_withrow_missouri_opposing_counsel_discovery", + "category": "discovery", + "label": "discovery / allen withrow Missouri opposing counsel discovery", + "template": "legacy/Discovery/Allen-Withrow_MO-OC-disco.docx", + "outputFilename": "discovery_discovery_allen_withrow_missouri_opposing_counsel_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_motion_to_transfer_venue", - "label": "Pleadings / MO Motion-to-Transfer-Venue", - "template": "legacy/Pleadings/MO_Motion-to-Transfer-Venue.docx", - "outputFilename": "mo_motion_to_transfer_venue_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_allen_withrow_missouri_opposing_counsel_discovery_rfas", + "category": "discovery", + "label": "discovery / allen withrow Missouri opposing counsel discovery rfas", + "template": "legacy/Discovery/Allen-Withrow_MO-OC-disco-RFAs.docx", + "outputFilename": "discovery_discovery_allen_withrow_missouri_opposing_counsel_discovery_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_motion_to_withdraw_services_terminated", - "label": "Pleadings / MO Motion-to-Withdraw Services-Terminated", - "template": "legacy/Pleadings/MO_Motion-to-Withdraw_Services-Terminated.docx", - "outputFilename": "mo_motion_to_withdraw_services_terminated_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_berman_rabin_missouri_opposing_counsel_cc", + "category": "discovery", + "label": "discovery / berman rabin Missouri opposing counsel cc", + "template": "legacy/Discovery/Berman-Rabin_MO-OC-CC.docx", + "outputFilename": "discovery_discovery_berman_rabin_missouri_opposing_counsel_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_motion_to_withdraw_unable_to_contact", - "label": "Pleadings / MO Motion-to-Withdraw Unable-to-Contact", - "template": "legacy/Pleadings/MO_Motion-to-Withdraw_Unable-to-Contact.docx", - "outputFilename": "mo_motion_to_withdraw_unable_to_contact_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_berman_rabin_missouri_opposing_counsel_loan_discovery", + "category": "discovery", + "label": "discovery / berman rabin Missouri opposing counsel loan discovery", + "template": "legacy/Discovery/Berman-Rabin_MO-OC-Loan-disco.docx", + "outputFilename": "discovery_discovery_berman_rabin_missouri_opposing_counsel_loan_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_mutual_dwp", - "label": "Pleadings / MO Mutual-DWP", - "template": "legacy/Pleadings/MO_Mutual-DWP.docx", - "outputFilename": "mo_mutual_dwp_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_blittks_db_cc_discovery", + "category": "discovery", + "label": "discovery / blittks db cc discovery", + "template": "legacy/Discovery/BlittKS-DB-CC-disco.docx", + "outputFilename": "discovery_discovery_blittks_db_cc_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_noh_to_plaintiff", - "label": "Pleadings / MO NoH-to-Plaintiff", - "template": "legacy/Pleadings/MO_NoH-to-Plaintiff.docx", - "outputFilename": "mo_noh_to_plaintiff_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_blittks_db_cc_discovery_rfas", + "category": "discovery", + "label": "discovery / blittks db cc discovery rfas", + "template": "legacy/Discovery/BlittKS-DB-CC-disco-RFAs.docx", + "outputFilename": "discovery_discovery_blittks_db_cc_discovery_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_proposed_consent_judgment", - "label": "Pleadings / MO Proposed-Consent-Judgment", - "template": "legacy/Pleadings/MO_Proposed-Consent-Judgment.docx", - "outputFilename": "mo_proposed_consent_judgment_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_blittks_db_cc_discovery_rfas_ryan", + "category": "discovery", + "label": "discovery / blittks db cc discovery rfas ryan", + "template": "legacy/Discovery/BlittKS-DB-CC-disco-RFAs_Ryan.docx", + "outputFilename": "discovery_discovery_blittks_db_cc_discovery_rfas_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_proposed_consent_judgment_blitt", - "label": "Pleadings / MO Proposed-Consent-Judgment Blitt", - "template": "legacy/Pleadings/MO_Proposed-Consent-Judgment_Blitt.docx", - "outputFilename": "mo_proposed_consent_judgment_blitt_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_blittks_db_cc_discovery_ryan", + "category": "discovery", + "label": "discovery / blittks db cc discovery ryan", + "template": "legacy/Discovery/BlittKS-DB-CC-disco_Ryan.docx", + "outputFilename": "discovery_discovery_blittks_db_cc_discovery_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_proposed_consent_judgment_pappas", - "label": "Pleadings / MO Proposed-Consent-Judgment Pappas", - "template": "legacy/Pleadings/MO_Proposed-Consent-Judgment_Pappas.docx", - "outputFilename": "mo_proposed_consent_judgment_pappas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_blittks_discovery", + "category": "discovery", + "label": "discovery / blittks discovery", + "template": "legacy/Discovery/BlittKS-disco.docx", + "outputFilename": "discovery_discovery_blittks_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_rule_17_structured_settlement_memo", - "label": "Pleadings / MO Rule-17-Structured-Settlement-Memo", - "template": "legacy/Pleadings/MO_Rule-17-Structured-Settlement-Memo.docx", - "outputFilename": "mo_rule_17_structured_settlement_memo_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_blittks_discovery_copy", + "category": "discovery", + "label": "discovery / blittks discovery copy", + "template": "legacy/Discovery/BlittKS-disco - Copy.docx", + "outputFilename": "discovery_discovery_blittks_discovery_copy_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_soc", - "label": "Pleadings / MO SoC", - "template": "legacy/Pleadings/MO_SoC.docx", - "outputFilename": "mo_soc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_blittks_discovery_ryan", + "category": "discovery", + "label": "discovery / blittks discovery ryan", + "template": "legacy/Discovery/BlittKS-disco_Ryan.docx", + "outputFilename": "discovery_discovery_blittks_discovery_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_traffic_amended_plea_agreement", - "label": "Pleadings / MO Traffic Amended Plea-Agreement", - "template": "legacy/Pleadings/MO_Traffic_Amended Plea-Agreement.docx", - "outputFilename": "mo_traffic_amended_plea_agreement_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_blittks_opposing_counsel_cc_discovery_rfas", + "category": "discovery", + "label": "discovery / blittks opposing counsel cc discovery rfas", + "template": "legacy/Discovery/BlittKS-OC-CC-disco-RFAs.docx", + "outputFilename": "discovery_discovery_blittks_opposing_counsel_cc_discovery_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "mo_traffic_request_for_plea", - "label": "Pleadings / MO Traffic Request-for-Plea", - "template": "legacy/Pleadings/MO_Traffic_Request-for-Plea.docx", - "outputFilename": "mo_traffic_request_for_plea_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_blittks_opposing_counsel_cc_discovery_rfas_ryan", + "category": "discovery", + "label": "discovery / blittks opposing counsel cc discovery rfas ryan", + "template": "legacy/Discovery/BlittKS-OC-CC-disco-RFAs_Ryan.docx", + "outputFilename": "discovery_discovery_blittks_opposing_counsel_cc_discovery_rfas_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "authorization_disclosure_no_payment", - "label": "authorization-disclosure-no-payment", - "template": "legacy/authorization-disclosure-no-payment.docx", - "outputFilename": "authorization_disclosure_no_payment_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "id": "discovery_discovery_blittmo_db_cc_discovery", + "category": "discovery", + "label": "discovery / blittmo db cc discovery", + "template": "legacy/Discovery/BlittMO-DB-CC-disco.docx", + "outputFilename": "discovery_discovery_blittmo_db_cc_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "authorization_disclosure", - "label": "authorization-disclosure", + "id": "discovery_discovery_blittmo_db_cc_discovery_rfas", + "category": "discovery", + "label": "discovery / blittmo db cc discovery rfas", + "template": "legacy/Discovery/BlittMO-DB-CC-disco-RFAs.docx", + "outputFilename": "discovery_discovery_blittmo_db_cc_discovery_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_blittmo_db_discovery", + "category": "discovery", + "label": "discovery / blittmo db discovery", + "template": "legacy/Discovery/BlittMO-DB-disco.docx", + "outputFilename": "discovery_discovery_blittmo_db_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_blittmo_discovery", + "category": "discovery", + "label": "discovery / blittmo discovery", + "template": "legacy/Discovery/BlittMO-disco.docx", + "outputFilename": "discovery_discovery_blittmo_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_blittmo_discovery_db_loan_draft", + "category": "discovery", + "label": "discovery / blittmo discovery db loan draft", + "template": "legacy/Discovery/BlittMO-disco-DB-Loan-DRAFT.docx", + "outputFilename": "discovery_discovery_blittmo_discovery_db_loan_draft_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_blittmo_discovery_db_loan_rfas", + "category": "discovery", + "label": "discovery / blittmo discovery db loan rfas", + "template": "legacy/Discovery/BlittMO-disco-DB-Loan-RFAs.docx", + "outputFilename": "discovery_discovery_blittmo_discovery_db_loan_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_blittmo_opposing_counsel_cc_discovery", + "category": "discovery", + "label": "discovery / blittmo opposing counsel cc discovery", + "template": "legacy/Discovery/BlittMO-OC-CC-disco.docx", + "outputFilename": "discovery_discovery_blittmo_opposing_counsel_cc_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_bq_kansas_discovery_db_cc", + "category": "discovery", + "label": "discovery / bq Kansas discovery db cc", + "template": "legacy/Discovery/BQ-KS-disco-DB-CC.docx", + "outputFilename": "discovery_discovery_bq_kansas_discovery_db_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_bq_kansas_discovery_db_cc_ryan", + "category": "discovery", + "label": "discovery / bq Kansas discovery db cc ryan", + "template": "legacy/Discovery/BQ-KS-disco-DB-CC_Ryan.docx", + "outputFilename": "discovery_discovery_bq_kansas_discovery_db_cc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_bq_kansas_discovery_db_loan", + "category": "discovery", + "label": "discovery / bq Kansas discovery db loan", + "template": "legacy/Discovery/BQ-KS-disco-DB-Loan.docx", + "outputFilename": "discovery_discovery_bq_kansas_discovery_db_loan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_bq_kansas_discovery_db_loan_ryan", + "category": "discovery", + "label": "discovery / bq Kansas discovery db loan ryan", + "template": "legacy/Discovery/BQ-KS-disco-DB-Loan_Ryan.docx", + "outputFilename": "discovery_discovery_bq_kansas_discovery_db_loan_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_bq_kansas_discovery_opposing_counsel_cc", + "category": "discovery", + "label": "discovery / bq Kansas discovery opposing counsel cc", + "template": "legacy/Discovery/BQ-KS-disco-OC-CC.docx", + "outputFilename": "discovery_discovery_bq_kansas_discovery_opposing_counsel_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_bq_kansas_discovery_opposing_counsel_cc_ryan", + "category": "discovery", + "label": "discovery / bq Kansas discovery opposing counsel cc ryan", + "template": "legacy/Discovery/BQ-KS-disco-OC-CC_Ryan.docx", + "outputFilename": "discovery_discovery_bq_kansas_discovery_opposing_counsel_cc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_bq_kansas_discovery_opposing_counsel_deficiency", + "category": "discovery", + "label": "discovery / bq Kansas discovery opposing counsel deficiency", + "template": "legacy/Discovery/BQ-KS-disco-OC-Deficiency.docx", + "outputFilename": "discovery_discovery_bq_kansas_discovery_opposing_counsel_deficiency_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_bq_kansas_discovery_opposing_counsel_deficiency_ryan", + "category": "discovery", + "label": "discovery / bq Kansas discovery opposing counsel deficiency ryan", + "template": "legacy/Discovery/BQ-KS-disco-OC-Deficiency_Ryan.docx", + "outputFilename": "discovery_discovery_bq_kansas_discovery_opposing_counsel_deficiency_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_bq_missouri_discovery_db_cc", + "category": "discovery", + "label": "discovery / bq Missouri discovery db cc", + "template": "legacy/Discovery/BQ-MO-disco-DB-CC.docx", + "outputFilename": "discovery_discovery_bq_missouri_discovery_db_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_bq_missouri_discovery_opposing_counsel_cc", + "category": "discovery", + "label": "discovery / bq Missouri discovery opposing counsel cc", + "template": "legacy/Discovery/BQ-MO-disco-OC-CC.docx", + "outputFilename": "discovery_discovery_bq_missouri_discovery_opposing_counsel_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_burns_walsh_kansas_db_cc", + "category": "discovery", + "label": "discovery / burns walsh Kansas db cc", + "template": "legacy/Discovery/Burns-Walsh-KS-DB-CC.docx", + "outputFilename": "discovery_discovery_burns_walsh_kansas_db_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_burns_walsh_kansas_db_cc_ryan", + "category": "discovery", + "label": "discovery / burns walsh Kansas db cc ryan", + "template": "legacy/Discovery/Burns-Walsh-KS-DB-CC_Ryan.docx", + "outputFilename": "discovery_discovery_burns_walsh_kansas_db_cc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_couch_lambert_kansas_opposing_counsel_cc", + "category": "discovery", + "label": "discovery / couch lambert Kansas opposing counsel cc", + "template": "legacy/Discovery/Couch-Lambert_KS-OC-CC.docx", + "outputFilename": "discovery_discovery_couch_lambert_kansas_opposing_counsel_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_couch_lambert_kansas_opposing_counsel_cc_ryan", + "category": "discovery", + "label": "discovery / couch lambert Kansas opposing counsel cc ryan", + "template": "legacy/Discovery/Couch-Lambert_KS-OC-CC_Ryan.docx", + "outputFilename": "discovery_discovery_couch_lambert_kansas_opposing_counsel_cc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_couch_lambert_missouri_opposing_counsel_cc", + "category": "discovery", + "label": "discovery / couch lambert Missouri opposing counsel cc", + "template": "legacy/Discovery/Couch-Lambert_MO-OC-CC.docx", + "outputFilename": "discovery_discovery_couch_lambert_missouri_opposing_counsel_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_disco_example_responses", + "category": "discovery", + "label": "discovery / discovery example responses", + "template": "legacy/Discovery/Disco-Example-Responses.docx", + "outputFilename": "discovery_discovery_disco_example_responses_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_discovery_to_plaintiff", + "category": "discovery", + "label": "discovery / discovery to plaintiff", + "template": "legacy/Discovery/Discovery-to-Plaintiff.docx", + "outputFilename": "discovery_discovery_discovery_to_plaintiff_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_discovery_to_plaintiff_balance_inquiry", + "category": "discovery", + "label": "discovery / discovery to plaintiff balance inquiry", + "template": "legacy/Discovery/Discovery-to-Plaintiff_Balance-Inquiry.docx", + "outputFilename": "discovery_discovery_discovery_to_plaintiff_balance_inquiry_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_discovery_to_plaintiff_debt_buyer_balance_inquiry_rogs_rpds_pdf", + "category": "discovery", + "label": "discovery / discovery to plaintiff debt buyer balance inquiry rogs rpds.pdf", + "template": "legacy/Discovery/Discovery-to-Plaintiff_Debt-buyer-Balance-Inquiry_ROGs_RPDs.pdf.docx", + "outputFilename": "discovery_discovery_discovery_to_plaintiff_debt_buyer_balance_inquiry_rogs_rpds_pdf_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_discovery_to_plaintiff_rogs_rpds", + "category": "discovery", + "label": "discovery / discovery to plaintiff rogs rpds", + "template": "legacy/Discovery/Discovery-to-Plaintiff_ROGs-RPDs.docx", + "outputFilename": "discovery_discovery_discovery_to_plaintiff_rogs_rpds_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_discovery_to_plaintiff_rogs_rpds_westlake_missouri", + "category": "discovery", + "label": "discovery / discovery to plaintiff rogs rpds westlake Missouri", + "template": "legacy/Discovery/Discovery-to-Plaintiff_ROGs-RPDs_Westlake_MO.docx", + "outputFilename": "discovery_discovery_discovery_to_plaintiff_rogs_rpds_westlake_missouri_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_faber_brand_missouri_db_auto_deficiency_rfas", + "category": "discovery", + "label": "discovery / faber brand Missouri db auto deficiency rfas", + "template": "legacy/Discovery/Faber-Brand-MO-DB-Auto-Deficiency-RFAs.docx", + "outputFilename": "discovery_discovery_faber_brand_missouri_db_auto_deficiency_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_faber_brand_missouri_db_loan", + "category": "discovery", + "label": "discovery / faber brand Missouri db loan", + "template": "legacy/Discovery/Faber-Brand-MO-DB-Loan.docx", + "outputFilename": "discovery_discovery_faber_brand_missouri_db_loan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_faber_brand_missouri_db_loan_rfas", + "category": "discovery", + "label": "discovery / faber brand Missouri db loan rfas", + "template": "legacy/Discovery/Faber-Brand-MO-DB-Loan-RFAs.docx", + "outputFilename": "discovery_discovery_faber_brand_missouri_db_loan_rfas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_kf_kansas_opposing_counsel_cc", + "category": "discovery", + "label": "discovery / kf Kansas opposing counsel cc", + "template": "legacy/Discovery/KF-KS-OC-CC.docx", + "outputFilename": "discovery_discovery_kf_kansas_opposing_counsel_cc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_kf_kansas_opposing_counsel_cc_ryan", + "category": "discovery", + "label": "discovery / kf Kansas opposing counsel cc ryan", + "template": "legacy/Discovery/KF-KS-OC-CC_Ryan.docx", + "outputFilename": "discovery_discovery_kf_kansas_opposing_counsel_cc_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_mandarich_kansas_discovery_db", + "category": "discovery", + "label": "discovery / mandarich Kansas discovery db", + "template": "legacy/Discovery/Mandarich-KS-disco-DB.docx", + "outputFilename": "discovery_discovery_mandarich_kansas_discovery_db_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_mandarich_kansas_discovery_db_ryan", + "category": "discovery", + "label": "discovery / mandarich Kansas discovery db ryan", + "template": "legacy/Discovery/Mandarich-KS-disco-DB_Ryan.docx", + "outputFilename": "discovery_discovery_mandarich_kansas_discovery_db_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_mandarich_kansas_discovery_opposing_counsel", + "category": "discovery", + "label": "discovery / mandarich Kansas discovery opposing counsel", + "template": "legacy/Discovery/Mandarich-KS-disco-OC.docx", + "outputFilename": "discovery_discovery_mandarich_kansas_discovery_opposing_counsel_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_mandarich_kansas_discovery_opposing_counsel_ryan", + "category": "discovery", + "label": "discovery / mandarich Kansas discovery opposing counsel ryan", + "template": "legacy/Discovery/Mandarich-KS-disco-OC_Ryan.docx", + "outputFilename": "discovery_discovery_mandarich_kansas_discovery_opposing_counsel_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_mandarich_missouri_discovery", + "category": "discovery", + "label": "discovery / mandarich Missouri discovery", + "template": "legacy/Discovery/Mandarich-MO-disco.docx", + "outputFilename": "discovery_discovery_mandarich_missouri_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pappas_kansas_db_discovery", + "category": "discovery", + "label": "discovery / pappas Kansas db discovery", + "template": "legacy/Discovery/Pappas-KS-DB-disco.docx", + "outputFilename": "discovery_discovery_pappas_kansas_db_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pappas_kansas_db_discovery_ryan", + "category": "discovery", + "label": "discovery / pappas Kansas db discovery ryan", + "template": "legacy/Discovery/Pappas-KS-DB-disco_Ryan.docx", + "outputFilename": "discovery_discovery_pappas_kansas_db_discovery_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pappas_kansas_loan_opposing_counsel", + "category": "discovery", + "label": "discovery / pappas Kansas loan opposing counsel", + "template": "legacy/Discovery/Pappas-KS-Loan-OC.docx", + "outputFilename": "discovery_discovery_pappas_kansas_loan_opposing_counsel_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pappas_kansas_loan_opposing_counsel_ryan", + "category": "discovery", + "label": "discovery / pappas Kansas loan opposing counsel ryan", + "template": "legacy/Discovery/Pappas-KS-Loan-OC_Ryan.docx", + "outputFilename": "discovery_discovery_pappas_kansas_loan_opposing_counsel_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pappas_kansas_opposing_counsel_discovery", + "category": "discovery", + "label": "discovery / pappas Kansas opposing counsel discovery", + "template": "legacy/Discovery/Pappas-KS-OC-disco.docx", + "outputFilename": "discovery_discovery_pappas_kansas_opposing_counsel_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pappas_kansas_opposing_counsel_discovery_ryan", + "category": "discovery", + "label": "discovery / pappas Kansas opposing counsel discovery ryan", + "template": "legacy/Discovery/Pappas-KS-OC-disco_Ryan.docx", + "outputFilename": "discovery_discovery_pappas_kansas_opposing_counsel_discovery_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pappas_missouri_db_consumer_installment_loan_discovery", + "category": "discovery", + "label": "discovery / pappas Missouri db consumer installment loan discovery", + "template": "legacy/Discovery/Pappas-MO-DB-Consumer-Installment-Loan-disco.docx", + "outputFilename": "discovery_discovery_pappas_missouri_db_consumer_installment_loan_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pappas_missouri_db_discovery", + "category": "discovery", + "label": "discovery / pappas Missouri db discovery", + "template": "legacy/Discovery/Pappas-MO-DB-disco.docx", + "outputFilename": "discovery_discovery_pappas_missouri_db_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pappas_missouri_opposing_counsel_discovery", + "category": "discovery", + "label": "discovery / pappas Missouri opposing counsel discovery", + "template": "legacy/Discovery/Pappas-MO-OC-disco.docx", + "outputFilename": "discovery_discovery_pappas_missouri_opposing_counsel_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pra_kansas_discovery", + "category": "discovery", + "label": "discovery / pra Kansas discovery", + "template": "legacy/Discovery/PRA-KS-disco.docx", + "outputFilename": "discovery_discovery_pra_kansas_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pra_kansas_discovery_ryan", + "category": "discovery", + "label": "discovery / pra Kansas discovery ryan", + "template": "legacy/Discovery/PRA-KS-disco_Ryan.docx", + "outputFilename": "discovery_discovery_pra_kansas_discovery_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pra_kansas_discovery_w_o_signature", + "category": "discovery", + "label": "discovery / pra Kansas discovery w o signature", + "template": "legacy/Discovery/PRA-KS-disco_w-o-Signature.docx", + "outputFilename": "discovery_discovery_pra_kansas_discovery_w_o_signature_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pra_kansas_discovery_w_o_signature_ryan", + "category": "discovery", + "label": "discovery / pra Kansas discovery w o signature ryan", + "template": "legacy/Discovery/PRA-KS-disco_w-o-Signature_Ryan.docx", + "outputFilename": "discovery_discovery_pra_kansas_discovery_w_o_signature_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pra_missouri_discovery", + "category": "discovery", + "label": "discovery / pra Missouri discovery", + "template": "legacy/Discovery/PRA-MO-disco.docx", + "outputFilename": "discovery_discovery_pra_missouri_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_pra_discovery", + "category": "discovery", + "label": "discovery / pra discovery", + "template": "legacy/Discovery/PRA-disco.docx", + "outputFilename": "discovery_discovery_pra_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "discovery_discovery_southlaw_missouri_opposing_counsel_discovery", + "category": "discovery", + "label": "discovery / southlaw Missouri opposing counsel discovery", + "template": "legacy/Discovery/Southlaw-MO-OC-disco.docx", + "outputFilename": "discovery_discovery_southlaw_missouri_opposing_counsel_discovery_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_authorization_disclosure", + "category": "general", + "label": "authorization disclosure", "template": "legacy/authorization-disclosure.docx", - "outputFilename": "authorization_disclosure_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_authorization_disclosure_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "cert_mailing", - "label": "cert-mailing", + "id": "general_cert_mailing", + "category": "general", + "label": "cert mailing", "template": "legacy/cert-mailing.docx", - "outputFilename": "cert_mailing_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_cert_mailing_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "closeout", + "id": "general_closeout", + "category": "general", "label": "closeout", "template": "legacy/closeout.docx", - "outputFilename": "closeout_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_closeout_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "defenses", + "id": "general_defenses", + "category": "general", "label": "defenses", "template": "legacy/defenses.docx", - "outputFilename": "defenses_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_defenses_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "dispute_envelopes", - "label": "dispute-envelopes", + "id": "general_dispute_envelopes", + "category": "general", + "label": "dispute envelopes", "template": "legacy/dispute-envelopes.docx", - "outputFilename": "dispute_envelopes_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_dispute_envelopes_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "entry", + "id": "general_entry", + "category": "general", "label": "entry", "template": "legacy/entry.docx", - "outputFilename": "entry_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_entry_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "isc_body", - "label": "isc-body", + "id": "general_isc_body", + "category": "general", + "label": "isc body", "template": "legacy/isc-body.docx", - "outputFilename": "isc_body_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_isc_body_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "letter", - "label": "letter", - "template": "legacy/letter.docx", - "outputFilename": "letter_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "notes", + "id": "general_notes", + "category": "general", "label": "notes", "template": "legacy/notes.docx", - "outputFilename": "notes_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_notes_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "retainer", + "id": "general_pleadings_ks_eoa_ryan", + "category": "general", + "label": "pleadings / Kansas eoa ryan", + "template": "legacy/Pleadings/KS_EoA-Ryan.docx", + "outputFilename": "general_pleadings_ks_eoa_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_ks_journal_entry_dwop", + "category": "general", + "label": "pleadings / Kansas journal entry dwop", + "template": "legacy/Pleadings/KS_Journal-Entry-DWOP.docx", + "outputFilename": "general_pleadings_ks_journal_entry_dwop_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_ks_msaj", + "category": "general", + "label": "pleadings / Kansas msaj", + "template": "legacy/Pleadings/KS_MSAJ.docx", + "outputFilename": "general_pleadings_ks_msaj_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_ks_noh", + "category": "general", + "label": "pleadings / Kansas noh", + "template": "legacy/Pleadings/KS_NoH.docx", + "outputFilename": "general_pleadings_ks_noh_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_ks_response_to_msj_late_response_auto_deficiency_blitt", + "category": "general", + "label": "pleadings / Kansas response to msj late response auto deficiency blitt", + "template": "legacy/Pleadings/KS_Response-to-MSJ_Late-Response_Auto-Deficiency-Blitt.docx", + "outputFilename": "general_pleadings_ks_response_to_msj_late_response_auto_deficiency_blitt_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_ks_response_to_msj_late_responses_blitt", + "category": "general", + "label": "pleadings / Kansas response to msj late responses blitt", + "template": "legacy/Pleadings/KS_Response-to-MSJ_Late-Responses-Blitt.docx", + "outputFilename": "general_pleadings_ks_response_to_msj_late_responses_blitt_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_ks_service_waiver", + "category": "general", + "label": "pleadings / Kansas service waiver", + "template": "legacy/Pleadings/KS_Service_Waiver.docx", + "outputFilename": "general_pleadings_ks_service_waiver_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_ads_account_stated_credit_card_db", + "category": "general", + "label": "pleadings / Missouri ads account stated credit card db", + "template": "legacy/Pleadings/MO_ADs_Account-Stated_Credit-Card_DB.docx", + "outputFilename": "general_pleadings_mo_ads_account_stated_credit_card_db_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_ads_account_stated_credit_card_opposing_counsel", + "category": "general", + "label": "pleadings / Missouri ads account stated credit card opposing counsel", + "template": "legacy/Pleadings/MO_ADs_Account-Stated_Credit-Card_OC.docx", + "outputFilename": "general_pleadings_mo_ads_account_stated_credit_card_opposing_counsel_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_ads_account_stated_medical_opposing_counsel", + "category": "general", + "label": "pleadings / Missouri ads account stated medical opposing counsel", + "template": "legacy/Pleadings/MO_ADs_Account-Stated_Medical_OC.docx", + "outputFilename": "general_pleadings_mo_ads_account_stated_medical_opposing_counsel_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_joint_msaj", + "category": "general", + "label": "pleadings / Missouri joint msaj", + "template": "legacy/Pleadings/MO_Joint-MSAJ.docx", + "outputFilename": "general_pleadings_mo_joint_msaj_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_msaj", + "category": "general", + "label": "pleadings / Missouri msaj", + "template": "legacy/Pleadings/MO_MSAJ.docx", + "outputFilename": "general_pleadings_mo_msaj_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_mutual_dwp", + "category": "general", + "label": "pleadings / Missouri mutual dwp", + "template": "legacy/Pleadings/MO_Mutual-DWP.docx", + "outputFilename": "general_pleadings_mo_mutual_dwp_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_noh_to_plaintiff", + "category": "general", + "label": "pleadings / Missouri noh to plaintiff", + "template": "legacy/Pleadings/MO_NoH-to-Plaintiff.docx", + "outputFilename": "general_pleadings_mo_noh_to_plaintiff_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_proposed_consent_judgment", + "category": "general", + "label": "pleadings / Missouri proposed consent judgment", + "template": "legacy/Pleadings/MO_Proposed-Consent-Judgment.docx", + "outputFilename": "general_pleadings_mo_proposed_consent_judgment_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_proposed_consent_judgment_blitt", + "category": "general", + "label": "pleadings / Missouri proposed consent judgment blitt", + "template": "legacy/Pleadings/MO_Proposed-Consent-Judgment_Blitt.docx", + "outputFilename": "general_pleadings_mo_proposed_consent_judgment_blitt_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_proposed_consent_judgment_pappas", + "category": "general", + "label": "pleadings / Missouri proposed consent judgment pappas", + "template": "legacy/Pleadings/MO_Proposed-Consent-Judgment_Pappas.docx", + "outputFilename": "general_pleadings_mo_proposed_consent_judgment_pappas_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_soc", + "category": "general", + "label": "pleadings / Missouri soc", + "template": "legacy/Pleadings/MO_SoC.docx", + "outputFilename": "general_pleadings_mo_soc_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_traffic_amended_plea_agreement", + "category": "general", + "label": "pleadings / Missouri traffic amended plea agreement", + "template": "legacy/Pleadings/MO_Traffic_Amended Plea-Agreement.docx", + "outputFilename": "general_pleadings_mo_traffic_amended_plea_agreement_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_pleadings_mo_traffic_request_for_plea", + "category": "general", + "label": "pleadings / Missouri traffic request for plea", + "template": "legacy/Pleadings/MO_Traffic_Request-for-Plea.docx", + "outputFilename": "general_pleadings_mo_traffic_request_for_plea_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "general_retainer", + "category": "general", "label": "retainer", "template": "legacy/retainer.docx", - "outputFilename": "retainer_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_retainer_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "spreadsheets", + "id": "general_spreadsheets", + "category": "general", "label": "spreadsheets", "template": "legacy/spreadsheets.docx", - "outputFilename": "spreadsheets_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_spreadsheets_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "waiver", + "id": "general_waiver", + "category": "general", "label": "waiver", "template": "legacy/waiver.docx", - "outputFilename": "waiver_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_waiver_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "entry", + "id": "general_entry_2", + "category": "general", "label": "~$entry", "template": "legacy/~$entry.docx", - "outputFilename": "entry_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_entry_2_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "nned_emails", - "label": "~$nned-Emails", - "template": "legacy/~$nned-Emails.docx", - "outputFilename": "nned_emails_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" - }, - { - "id": "notes", + "id": "general_notes_2", + "category": "general", "label": "~$notes", "template": "legacy/~$notes.docx", - "outputFilename": "notes_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_notes_2_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "oseout", + "id": "general_oseout", + "category": "general", "label": "~$oseout", "template": "legacy/~$oseout.docx", - "outputFilename": "oseout_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_oseout_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" }, { - "id": "readsheets", + "id": "general_readsheets", + "category": "general", "label": "~$readsheets", "template": "legacy/~$readsheets.docx", - "outputFilename": "readsheets_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + "outputFilename": "general_readsheets_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_canned_emails", + "category": "letters", + "label": "canned emails", + "template": "legacy/Canned-Emails.docx", + "outputFilename": "letters_canned_emails_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letter", + "category": "letters", + "label": "letter", + "template": "legacy/letter.docx", + "outputFilename": "letters_letter_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_annual_credit_report_request_envelope", + "category": "letters", + "label": "letters / annual credit report request envelope", + "template": "legacy/Letters/Annual-Credit-Report-Request-Envelope.docx", + "outputFilename": "letters_letters_annual_credit_report_request_envelope_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_annual_credit_report_request_form", + "category": "letters", + "label": "letters / annual credit report request form", + "template": "legacy/Letters/Annual-Credit-Report-Request-Form.docx", + "outputFilename": "letters_letters_annual_credit_report_request_form_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_authorization_disclosure", + "category": "letters", + "label": "letters / authorization disclosure", + "template": "legacy/Letters/authorization-disclosure.docx", + "outputFilename": "letters_letters_authorization_disclosure_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_missouri_traffic_ticket_james", + "category": "letters", + "label": "letters / closeout Missouri traffic ticket james", + "template": "legacy/Letters/closeout_MO-Traffic-Ticket_James.docx", + "outputFilename": "letters_letters_closeout_missouri_traffic_ticket_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_missouri_traffic_ticket_ryan", + "category": "letters", + "label": "letters / closeout Missouri traffic ticket ryan", + "template": "legacy/Letters/closeout_MO-Traffic-Ticket_Ryan.docx", + "outputFilename": "letters_letters_closeout_missouri_traffic_ticket_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_cj_information_sheet", + "category": "letters", + "label": "letters / closeout cj information sheet", + "template": "legacy/Letters/closeout_CJ_Information-Sheet.docx", + "outputFilename": "letters_letters_closeout_cj_information_sheet_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_cj_ryan", + "category": "letters", + "label": "letters / closeout cj ryan", + "template": "legacy/Letters/closeout_CJ_Ryan.docx", + "outputFilename": "letters_letters_closeout_cj_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_cj_with_interest_costs", + "category": "letters", + "label": "letters / closeout cj with interest costs", + "template": "legacy/Letters/closeout_CJ_with-interest-costs.docx", + "outputFilename": "letters_letters_closeout_cj_with_interest_costs_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_db_by_court_james", + "category": "letters", + "label": "letters / closeout dwop db by court james", + "template": "legacy/Letters/closeout_DWOP-DB-by-Court_James.docx", + "outputFilename": "letters_letters_closeout_dwop_db_by_court_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_db_by_court_ryan", + "category": "letters", + "label": "letters / closeout dwop db by court ryan", + "template": "legacy/Letters/closeout_DWOP-DB-by-Court_Ryan.docx", + "outputFilename": "letters_letters_closeout_dwop_db_by_court_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_db_by_court_without_enclosures_james", + "category": "letters", + "label": "letters / closeout dwop db by court without enclosures james", + "template": "legacy/Letters/closeout_DWOP-DB-by-Court_without-enclosures_James.docx", + "outputFilename": "letters_letters_closeout_dwop_db_by_court_without_enclosures_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_db_by_court_without_enclosures_ryan", + "category": "letters", + "label": "letters / closeout dwop db by court without enclosures ryan", + "template": "legacy/Letters/closeout_DWOP-DB-by-Court_without-enclosures_Ryan.docx", + "outputFilename": "letters_letters_closeout_dwop_db_by_court_without_enclosures_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_db_james", + "category": "letters", + "label": "letters / closeout dwop db james", + "template": "legacy/Letters/closeout_DWOP-DB_James.docx", + "outputFilename": "letters_letters_closeout_dwop_db_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_db_ryan", + "category": "letters", + "label": "letters / closeout dwop db ryan", + "template": "legacy/Letters/closeout_DWOP-DB_Ryan.docx", + "outputFilename": "letters_letters_closeout_dwop_db_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_generic_james", + "category": "letters", + "label": "letters / closeout dwop generic james", + "template": "legacy/Letters/closeout_DWOP-generic_James.docx", + "outputFilename": "letters_letters_closeout_dwop_generic_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_generic_ryan", + "category": "letters", + "label": "letters / closeout dwop generic ryan", + "template": "legacy/Letters/closeout_DWOP-generic_Ryan.docx", + "outputFilename": "letters_letters_closeout_dwop_generic_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_hardship_james", + "category": "letters", + "label": "letters / closeout dwop hardship james", + "template": "legacy/Letters/closeout_DWOP-Hardship_James.docx", + "outputFilename": "letters_letters_closeout_dwop_hardship_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_hardship_ryan", + "category": "letters", + "label": "letters / closeout dwop hardship ryan", + "template": "legacy/Letters/closeout_DWOP-Hardship_Ryan.docx", + "outputFilename": "letters_letters_closeout_dwop_hardship_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_james", + "category": "letters", + "label": "letters / closeout dwop james", + "template": "legacy/Letters/closeout_DWOP_James.docx", + "outputFilename": "letters_letters_closeout_dwop_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_opposing_counsel_by_court_james", + "category": "letters", + "label": "letters / closeout dwop opposing counsel by court james", + "template": "legacy/Letters/closeout_DWOP-OC-by-Court_James.docx", + "outputFilename": "letters_letters_closeout_dwop_opposing_counsel_by_court_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_opposing_counsel_by_court_ryan", + "category": "letters", + "label": "letters / closeout dwop opposing counsel by court ryan", + "template": "legacy/Letters/closeout_DWOP-OC-by-Court_Ryan.docx", + "outputFilename": "letters_letters_closeout_dwop_opposing_counsel_by_court_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_opposing_counsel_by_court_without_enclosures_james", + "category": "letters", + "label": "letters / closeout dwop opposing counsel by court without enclosures james", + "template": "legacy/Letters/closeout_DWOP-OC-by-Court_without-enclosures_James.docx", + "outputFilename": "letters_letters_closeout_dwop_opposing_counsel_by_court_without_enclosures_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_opposing_counsel_by_court_without_enclosures_ryan", + "category": "letters", + "label": "letters / closeout dwop opposing counsel by court without enclosures ryan", + "template": "legacy/Letters/closeout_DWOP-OC-by-Court_without-enclosures_Ryan.docx", + "outputFilename": "letters_letters_closeout_dwop_opposing_counsel_by_court_without_enclosures_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_ryan", + "category": "letters", + "label": "letters / closeout dwop ryan", + "template": "legacy/Letters/closeout_DWOP_Ryan.docx", + "outputFilename": "letters_letters_closeout_dwop_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_trial_james", + "category": "letters", + "label": "letters / closeout dwop trial james", + "template": "legacy/Letters/closeout_DWOP-Trial_James.docx", + "outputFilename": "letters_letters_closeout_dwop_trial_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwop_trial_ryan", + "category": "letters", + "label": "letters / closeout dwop trial ryan", + "template": "legacy/Letters/closeout_DWOP-Trial_Ryan.docx", + "outputFilename": "letters_letters_closeout_dwop_trial_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwp_james", + "category": "letters", + "label": "letters / closeout dwp james", + "template": "legacy/Letters/closeout_DWP_James.docx", + "outputFilename": "letters_letters_closeout_dwp_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_dwp_ryan", + "category": "letters", + "label": "letters / closeout dwp ryan", + "template": "legacy/Letters/closeout_DWP_Ryan.docx", + "outputFilename": "letters_letters_closeout_dwp_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_fcra_notice_cj", + "category": "letters", + "label": "letters / closeout fcra notice cj", + "template": "legacy/Letters/closeout_FCRA-Notice-CJ.docx", + "outputFilename": "letters_letters_closeout_fcra_notice_cj_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_fcra_notice_rule_17", + "category": "letters", + "label": "letters / closeout fcra notice rule 17", + "template": "legacy/Letters/closeout_FCRA-Notice-Rule-17.docx", + "outputFilename": "letters_letters_closeout_fcra_notice_rule_17_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_pra_mutual_release_james", + "category": "letters", + "label": "letters / closeout pra mutual release james", + "template": "legacy/Letters/closeout_PRA-Mutual-Release_James.docx", + "outputFilename": "letters_letters_closeout_pra_mutual_release_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_pra_mutual_release_ryan", + "category": "letters", + "label": "letters / closeout pra mutual release ryan", + "template": "legacy/Letters/closeout_PRA-Mutual-Release_Ryan.docx", + "outputFilename": "letters_letters_closeout_pra_mutual_release_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_rule_17_james", + "category": "letters", + "label": "letters / closeout rule 17 james", + "template": "legacy/Letters/closeout_Rule-17_James.docx", + "outputFilename": "letters_letters_closeout_rule_17_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_closeout_rule_17_ryan", + "category": "letters", + "label": "letters / closeout rule 17 ryan", + "template": "legacy/Letters/closeout_Rule-17_Ryan.docx", + "outputFilename": "letters_letters_closeout_rule_17_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_envelope_opposing_counsel", + "category": "letters", + "label": "letters / envelope opposing counsel", + "template": "legacy/Letters/Envelope_OC.docx", + "outputFilename": "letters_letters_envelope_opposing_counsel_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_intake_case_expectations", + "category": "letters", + "label": "letters / intake case expectations", + "template": "legacy/Letters/Intake_case-expectations.docx", + "outputFilename": "letters_letters_intake_case_expectations_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_intake_case_expectations_long", + "category": "letters", + "label": "letters / intake case expectations long", + "template": "legacy/Letters/Intake_case-expectations-long.docx", + "outputFilename": "letters_letters_intake_case_expectations_long_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_intake_cover_letter_james", + "category": "letters", + "label": "letters / intake cover letter james", + "template": "legacy/Letters/Intake-Cover-Letter_James.docx", + "outputFilename": "letters_letters_intake_cover_letter_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_intake_cover_letter_ryan", + "category": "letters", + "label": "letters / intake cover letter ryan", + "template": "legacy/Letters/Intake-Cover-Letter_Ryan.docx", + "outputFilename": "letters_letters_intake_cover_letter_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_intake_general_information", + "category": "letters", + "label": "letters / intake general information", + "template": "legacy/Letters/Intake_general-information.docx", + "outputFilename": "letters_letters_intake_general_information_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_intake_welcome_letter", + "category": "letters", + "label": "letters / intake welcome letter", + "template": "legacy/Letters/Intake_welcome-letter.docx", + "outputFilename": "letters_letters_intake_welcome_letter_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_post_judgment_garnishment_notice_james", + "category": "letters", + "label": "letters / post judgment garnishment notice james", + "template": "legacy/Letters/Post-Judgment_Garnishment-Notice_James.docx", + "outputFilename": "letters_letters_post_judgment_garnishment_notice_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_post_judgment_garnishment_notice_ryan", + "category": "letters", + "label": "letters / post judgment garnishment notice ryan", + "template": "legacy/Letters/Post-Judgment_Garnishment-Notice_Ryan.docx", + "outputFilename": "letters_letters_post_judgment_garnishment_notice_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_post_judgment_returned_check_james", + "category": "letters", + "label": "letters / post judgment returned check james", + "template": "legacy/Letters/Post-Judgment_Returned-Check_James.docx", + "outputFilename": "letters_letters_post_judgment_returned_check_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_post_judgment_returned_check_ryan", + "category": "letters", + "label": "letters / post judgment returned check ryan", + "template": "legacy/Letters/Post-Judgment_Returned-Check_Ryan.docx", + "outputFilename": "letters_letters_post_judgment_returned_check_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_representation_termination_james", + "category": "letters", + "label": "letters / representation termination james", + "template": "legacy/Letters/representation-termination_James.docx", + "outputFilename": "letters_letters_representation_termination_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_representation_termination_ryan", + "category": "letters", + "label": "letters / representation termination ryan", + "template": "legacy/Letters/representation-termination_Ryan.docx", + "outputFilename": "letters_letters_representation_termination_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_unable_to_contact_james", + "category": "letters", + "label": "letters / unable to contact james", + "template": "legacy/Letters/unable-to-contact_James.docx", + "outputFilename": "letters_letters_unable_to_contact_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_letters_unable_to_contact_ryan", + "category": "letters", + "label": "letters / unable to contact ryan", + "template": "legacy/Letters/unable-to-contact_Ryan.docx", + "outputFilename": "letters_letters_unable_to_contact_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "letters_nned_emails", + "category": "letters", + "label": "~$nned emails", + "template": "legacy/~$nned-Emails.docx", + "outputFilename": "letters_nned_emails_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_ks_joco_motion_to_withdraw", + "category": "motions", + "label": "pleadings / Kansas joco motion to withdraw", + "template": "legacy/Pleadings/KS_JOCO_Motion-to-Withdraw.docx", + "outputFilename": "motions_pleadings_ks_joco_motion_to_withdraw_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_ks_motion_to_file_out_of_time", + "category": "motions", + "label": "pleadings / Kansas motion to file out of time", + "template": "legacy/Pleadings/KS_Motion-to-File-Out-of-Time.docx", + "outputFilename": "motions_pleadings_ks_motion_to_file_out_of_time_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_ks_motion_to_withdraw", + "category": "motions", + "label": "pleadings / Kansas motion to withdraw", + "template": "legacy/Pleadings/KS_Motion-to-Withdraw.docx", + "outputFilename": "motions_pleadings_ks_motion_to_withdraw_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_mo_joint_motion_order_to_continue_hearing", + "category": "motions", + "label": "pleadings / Missouri joint motion order to continue hearing", + "template": "legacy/Pleadings/MO_Joint-Motion-Order-to-Continue-Hearing.docx", + "outputFilename": "motions_pleadings_mo_joint_motion_order_to_continue_hearing_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_mo_joint_motion_order_to_continue_trial", + "category": "motions", + "label": "pleadings / Missouri joint motion order to continue trial", + "template": "legacy/Pleadings/MO_Joint-Motion-Order-to-Continue-Trial.docx", + "outputFilename": "motions_pleadings_mo_joint_motion_order_to_continue_trial_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_mo_joint_motion_to_continue_hearing", + "category": "motions", + "label": "pleadings / Missouri joint motion to continue hearing", + "template": "legacy/Pleadings/MO_Joint-Motion-to-Continue-Hearing.docx", + "outputFilename": "motions_pleadings_mo_joint_motion_to_continue_hearing_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_mo_joint_motion_to_continue_trial", + "category": "motions", + "label": "pleadings / Missouri joint motion to continue trial", + "template": "legacy/Pleadings/MO_Joint-Motion-to-Continue-Trial.docx", + "outputFilename": "motions_pleadings_mo_joint_motion_to_continue_trial_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_mo_motion_to_file_out_of_time", + "category": "motions", + "label": "pleadings / Missouri motion to file out of time", + "template": "legacy/Pleadings/MO_Motion-to-File-Out-of-Time.docx", + "outputFilename": "motions_pleadings_mo_motion_to_file_out_of_time_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_mo_motion_to_quash_garnishment", + "category": "motions", + "label": "pleadings / Missouri motion to quash garnishment", + "template": "legacy/Pleadings/MO_Motion-to-Quash-Garnishment.docx", + "outputFilename": "motions_pleadings_mo_motion_to_quash_garnishment_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_mo_motion_to_quash_garnishment_exempt_income", + "category": "motions", + "label": "pleadings / Missouri motion to quash garnishment exempt income", + "template": "legacy/Pleadings/MO_Motion-to-Quash-Garnishment-Exempt-Income.docx", + "outputFilename": "motions_pleadings_mo_motion_to_quash_garnishment_exempt_income_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_mo_motion_to_transfer_venue", + "category": "motions", + "label": "pleadings / Missouri motion to transfer venue", + "template": "legacy/Pleadings/MO_Motion-to-Transfer-Venue.docx", + "outputFilename": "motions_pleadings_mo_motion_to_transfer_venue_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_mo_motion_to_withdraw_services_terminated", + "category": "motions", + "label": "pleadings / Missouri motion to withdraw services terminated", + "template": "legacy/Pleadings/MO_Motion-to-Withdraw_Services-Terminated.docx", + "outputFilename": "motions_pleadings_mo_motion_to_withdraw_services_terminated_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "motions_pleadings_mo_motion_to_withdraw_unable_to_contact", + "category": "motions", + "label": "pleadings / Missouri motion to withdraw unable to contact", + "template": "legacy/Pleadings/MO_Motion-to-Withdraw_Unable-to-Contact.docx", + "outputFilename": "motions_pleadings_mo_motion_to_withdraw_unable_to_contact_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_authorization_disclosure_no_payment", + "category": "settlement", + "label": "authorization disclosure no payment", + "template": "legacy/authorization-disclosure-no-payment.docx", + "outputFilename": "settlement_authorization_disclosure_no_payment_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_letters_authorization_disclosure_no_payment", + "category": "settlement", + "label": "letters / authorization disclosure no payment", + "template": "legacy/Letters/authorization-disclosure-no-payment.docx", + "outputFilename": "settlement_letters_authorization_disclosure_no_payment_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_letters_closeout_settlement_payment_dwp_james", + "category": "settlement", + "label": "letters / closeout settlement payment dwp james", + "template": "legacy/Letters/closeout_Settlement-Payment-DWP_James.docx", + "outputFilename": "settlement_letters_closeout_settlement_payment_dwp_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_letters_closeout_settlement_payment_dwp_no_due_date_james", + "category": "settlement", + "label": "letters / closeout settlement payment dwp no due date james", + "template": "legacy/Letters/closeout_Settlement-Payment-DWP-no-due-date_James.docx", + "outputFilename": "settlement_letters_closeout_settlement_payment_dwp_no_due_date_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_letters_closeout_settlement_payment_dwp_no_due_date_ryan", + "category": "settlement", + "label": "letters / closeout settlement payment dwp no due date ryan", + "template": "legacy/Letters/closeout_Settlement-Payment-DWP-no-due-date_Ryan.docx", + "outputFilename": "settlement_letters_closeout_settlement_payment_dwp_no_due_date_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_letters_closeout_settlement_payment_dwp_ryan", + "category": "settlement", + "label": "letters / closeout settlement payment dwp ryan", + "template": "legacy/Letters/closeout_Settlement-Payment-DWP_Ryan.docx", + "outputFilename": "settlement_letters_closeout_settlement_payment_dwp_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_letters_closeout_settlement_payment_mutual_release_dwp_james", + "category": "settlement", + "label": "letters / closeout settlement payment mutual release dwp james", + "template": "legacy/Letters/closeout_Settlement-Payment-Mutual-Release-DWP_James.docx", + "outputFilename": "settlement_letters_closeout_settlement_payment_mutual_release_dwp_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_letters_closeout_settlement_payment_mutual_release_dwp_ryan", + "category": "settlement", + "label": "letters / closeout settlement payment mutual release dwp ryan", + "template": "legacy/Letters/closeout_Settlement-Payment-Mutual-Release-DWP_Ryan.docx", + "outputFilename": "settlement_letters_closeout_settlement_payment_mutual_release_dwp_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_letters_payment_receipt_ryan", + "category": "settlement", + "label": "letters / payment receipt ryan", + "template": "legacy/Letters/payment-receipt_Ryan.docx", + "outputFilename": "settlement_letters_payment_receipt_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_letters_post_judgment_missed_payment_james", + "category": "settlement", + "label": "letters / post judgment missed payment james", + "template": "legacy/Letters/Post-Judgment_Missed-Payment_James.docx", + "outputFilename": "settlement_letters_post_judgment_missed_payment_james_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_letters_post_judgment_missed_payment_ryan", + "category": "settlement", + "label": "letters / post judgment missed payment ryan", + "template": "legacy/Letters/Post-Judgment_Missed-Payment_Ryan.docx", + "outputFilename": "settlement_letters_post_judgment_missed_payment_ryan_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" + }, + { + "id": "settlement_pleadings_mo_rule_17_structured_settlement_memo", + "category": "settlement", + "label": "pleadings / Missouri rule 17 structured settlement memo", + "template": "legacy/Pleadings/MO_Rule-17-Structured-Settlement-Memo.docx", + "outputFilename": "settlement_pleadings_mo_rule_17_structured_settlement_memo_{caseNumber}_{timestamp_YYYY-MM-DD_HH-mm-ss}.docx" } ], "calculations": [ @@ -2024,5 +2215,9 @@ } ] } - ] + ], + "defaultTemplateId": "answers_pleadings_ks_answer", + "excelMapSet": "legal_profile", + "label": "Legal", + "title": "Legal" } \ No newline at end of file diff --git a/tools/doc_generator/content/excel_maps/legal_profile.json b/tools/doc_generator/content/excel_maps/legal_profile.json new file mode 100644 index 0000000..18d21c2 --- /dev/null +++ b/tools/doc_generator/content/excel_maps/legal_profile.json @@ -0,0 +1,551 @@ +{ + "id": "legal_profile", + "label": "Legal Profile Excel Maps", + "maps": [ + { + "id": "legacy_datafile", + "sourceName": "fieldToCellMap", + "label": "Legacy Datafile Template", + "description": "Generated from public/constants.js object fieldToCellMap.", + "template": "excel/legal_profile/template.xlsx", + "legacyTemplateCandidates": [ + { + "label": "amortization.xlsx", + "legacyPath": "/mnt/storage/sftp/mcelwain/repository/word-doc-generator/amortization.xlsx", + "filename": "amortization.xlsx" + }, + { + "label": "template.xlsx", + "legacyPath": "/mnt/storage/sftp/mcelwain/repository/word-doc-generator/template.xlsx", + "filename": "template.xlsx" + } + ], + "fields": { + "debtCollector6AddressLine1": "A100", + "debtCollector7Name": "A104", + "debtCollector7AddressLine1": "A106", + "SSNLastFour": "A11", + "debtCollector8Name": "A110", + "debtCollector8AddressLine1": "A112", + "debtCollector9Name": "A116", + "debtCollector9AddressLine1": "A118", + "debtCollector10Name": "A122", + "debtCollector10AddressLine1": "A124", + "debtCollector11Name": "A128", + "debtCollector11AddressLine1": "A130", + "debtCollector12Name": "A134", + "debtCollector12AddressLine1": "A136", + "client2FirstName": "A14", + "debtCollector13Name": "A140", + "debtCollector13AddressLine1": "A142", + "debtCollector14Name": "A146", + "debtCollector14AddressLine1": "A148", + "debtCollector15Name": "A152", + "debtCollector15AddressLine1": "A154", + "debtCollector16Name": "A158", + "client2homeAddress": "A16", + "debtCollector16AddressLine1": "A160", + "debtCollector17Name": "A164", + "debtCollector17AddressLine1": "A166", + "debtCollector18Name": "A170", + "debtCollector18AddressLine1": "A172", + "debtCollector19Name": "A176", + "debtCollector19AddressLine1": "A178", + "client2homeCounty": "A18", + "debtCollector20Name": "A182", + "debtCollector20AddressLine1": "A184", + "debtCollector21Name": "A188", + "debtCollector21AddressLine1": "A190", + "debtCollector22Name": "A194", + "debtCollector22AddressLine1": "A196", + "client2dob": "A20", + "debtCollector23Name": "A200", + "debtCollector23AddressLine1": "A202", + "debtCollector24Name": "A206", + "debtCollector24AddressLine1": "A208", + "debtCollector25Name": "A212", + "debtCollector25AddressLine1": "A214", + "debtCollector26Name": "A218", + "SSN2LastFour": "A22", + "debtCollector26AddressLine1": "A220", + "debtCollector27Name": "A224", + "debtCollector27AddressLine1": "A226", + "debtCollector28Name": "A230", + "debtCollector28AddressLine1": "A232", + "debtCollector29Name": "A236", + "debtCollector29AddressLine1": "A238", + "debtCollector30Name": "A242", + "debtCollector30AddressLine1": "A244", + "caseDesignation": "A27", + "caseNumber": "A29", + "clientFirstName": "A3", + "caseSuitAmount": "A31", + "caseAnswerDate": "A33", + "caseFilingDate": "A35", + "caseAnswerFiledDate": "A37", + "settlementAmount": "A46", + "homeAddress": "A5", + "fee": "A54", + "nameOnCard": "A56", + "billingAddress": "A58", + "notes": "A63", + "debtCollector1Name": "A68", + "homeCounty": "A7", + "debtCollector1AddressLine1": "A70", + "debtCollector2Name": "A74", + "debtCollector2AddressLine1": "A76", + "debtCollector3Name": "A80", + "debtCollector3AddressLine1": "A82", + "debtCollector4Name": "A86", + "debtCollector4AddressLine1": "A88", + "dob": "A9", + "debtCollector5Name": "A92", + "debtCollector5AddressLine1": "A94", + "debtCollector6Name": "A98", + "debtCollector7Creditor": "B104", + "dmcName": "B11", + "debtCollector8Creditor": "B110", + "debtCollector9Creditor": "B116", + "debtCollector10Creditor": "B122", + "debtCollector11Creditor": "B128", + "debtCollector12Creditor": "B134", + "client2MiddleName": "B14", + "debtCollector13Creditor": "B140", + "debtCollector14Creditor": "B146", + "debtCollector15Creditor": "B152", + "debtCollector16Creditor": "B158", + "client2homeCity": "B16", + "debtCollector17Creditor": "B164", + "debtCollector18Creditor": "B170", + "debtCollector19Creditor": "B176", + "client2homePhone": "B18", + "debtCollector20Creditor": "B182", + "debtCollector21Creditor": "B188", + "debtCollector22Creditor": "B194", + "client2alias": "B20", + "debtCollector23Creditor": "B200", + "debtCollector24Creditor": "B206", + "debtCollector25Creditor": "B212", + "debtCollector26Creditor": "B218", + "debtCollector27Creditor": "B224", + "debtCollector28Creditor": "B230", + "debtCollector29Creditor": "B236", + "debtCollector30Creditor": "B242", + "caseCounty": "B27", + "casePlaintiff": "B29", + "clientMiddleName": "B3", + "caseSuitTheory": "B31", + "caseDivisionNumber": "B33", + "caseFilingAttorney": "B35", + "caseDisposition": "B37", + "settlementInstallmentAmount": "B46", + "homeCity": "B5", + "installmentAmount": "B54", + "cardNumber": "B56", + "billingZip": "B58", + "debtCollector1Creditor": "B68", + "homePhone": "B7", + "debtCollector2Creditor": "B74", + "debtCollector3Creditor": "B80", + "debtCollector4Creditor": "B86", + "alias": "B9", + "debtCollector5Creditor": "B92", + "debtCollector6Creditor": "B98", + "debtCollector6AddressLine2": "C100", + "debtCollector7Account": "C104", + "debtCollector7AddressLine2": "C106", + "debtCollector8Account": "C110", + "debtCollector8AddressLine2": "C112", + "debtCollector9Account": "C116", + "debtCollector9AddressLine2": "C118", + "debtCollector10Account": "C122", + "debtCollector10AddressLine2": "C124", + "debtCollector11Account": "C128", + "debtCollector11AddressLine2": "C130", + "debtCollector12Account": "C134", + "debtCollector12AddressLine2": "C136", + "client2LastName": "C14", + "debtCollector13Account": "C140", + "debtCollector13AddressLine2": "C142", + "debtCollector14Account": "C146", + "debtCollector14AddressLine2": "C148", + "debtCollector15Account": "C152", + "debtCollector15AddressLine2": "C154", + "debtCollector16Account": "C158", + "client2homeState": "C16", + "debtCollector16AddressLine2": "C160", + "debtCollector17Account": "C164", + "debtCollector17AddressLine2": "C166", + "debtCollector18Account": "C170", + "debtCollector18AddressLine2": "C172", + "debtCollector19Account": "C176", + "debtCollector19AddressLine2": "C178", + "client2cellPhone": "C18", + "debtCollector20Account": "C182", + "debtCollector20AddressLine2": "C184", + "debtCollector21Account": "C188", + "debtCollector21AddressLine2": "C190", + "debtCollector22Account": "C194", + "debtCollector22AddressLine2": "C196", + "client2NamePrefix": "C20", + "debtCollector23Account": "C200", + "debtCollector23AddressLine2": "C202", + "debtCollector24Account": "C206", + "debtCollector24AddressLine2": "C208", + "debtCollector25Account": "C212", + "debtCollector25AddressLine2": "C214", + "debtCollector26Account": "C218", + "debtCollector26AddressLine2": "C220", + "debtCollector27Account": "C224", + "debtCollector27AddressLine2": "C226", + "debtCollector28Account": "C230", + "debtCollector28AddressLine2": "C232", + "debtCollector29Account": "C236", + "debtCollector29AddressLine2": "C238", + "debtCollector30Account": "C242", + "debtCollector30AddressLine2": "C244", + "caseState": "C27", + "caseDefendant": "C29", + "clientLastName": "C3", + "caseOriginalCreditor": "C31", + "caseDivisionJudge": "C33", + "caseAccLastFour": "C35", + "caseDispositionDate": "C37", + "settlementFirstPaymentDate": "C46", + "homeState": "C5", + "installmentDate": "C54", + "securityCode": "C56", + "debtCollector1Account": "C68", + "cellPhone": "C7", + "debtCollector1AddressLine2": "C70", + "debtCollector2Account": "C74", + "debtCollector2AddressLine2": "C76", + "debtCollector3Account": "C80", + "debtCollector3AddressLine2": "C82", + "debtCollector4Account": "C86", + "debtCollector4AddressLine2": "C88", + "clientNamePrefix": "C9", + "debtCollector5Account": "C92", + "debtCollector5AddressLine2": "C94", + "debtCollector6Account": "C98", + "debtCollector7Amount": "D104", + "debtCollector8Amount": "D110", + "debtCollector9Amount": "D116", + "debtCollector10Amount": "D122", + "debtCollector11Amount": "D128", + "debtCollector12Amount": "D134", + "SSN2": "D14", + "debtCollector13Amount": "D140", + "debtCollector14Amount": "D146", + "debtCollector15Amount": "D152", + "debtCollector16Amount": "D158", + "client2homeZip": "D16", + "debtCollector17Amount": "D164", + "debtCollector18Amount": "D170", + "debtCollector19Amount": "D176", + "client2email": "D18", + "debtCollector20Amount": "D182", + "debtCollector21Amount": "D188", + "debtCollector22Amount": "D194", + "client2NameSuffix": "D20", + "debtCollector23Amount": "D200", + "debtCollector24Amount": "D206", + "debtCollector25Amount": "D212", + "debtCollector26Amount": "D218", + "debtCollector27Amount": "D224", + "debtCollector28Amount": "D230", + "debtCollector29Amount": "D236", + "debtCollector30Amount": "D242", + "caseDivisionDesignation": "D27", + "caseOpposingCounsel": "D29", + "SSN": "D3", + "caseAccountNumber": "D31", + "discoCosDate": "D33", + "caseOCFileNumber": "D35", + "settlementInstallmentNo": "D46", + "homeZip": "D5", + "expiration": "D56", + "debtCollector1Amount": "D68", + "email": "D7", + "debtCollector2Amount": "D74", + "debtCollector3Amount": "D80", + "debtCollector4Amount": "D86", + "clientNameSuffix": "D9", + "debtCollector5Amount": "D92", + "debtCollector6Amount": "D98" + }, + "mode": "datafile" + }, + { + "id": "legacy_datafile_old", + "sourceName": "fieldToCellMapOld", + "label": "Legacy Datafile Template - Old Map", + "description": "Generated from public/constants.js object fieldToCellMapOld.", + "template": "excel/legal_profile/template.xlsx", + "legacyTemplateCandidates": [ + { + "label": "amortization.xlsx", + "legacyPath": "/mnt/storage/sftp/mcelwain/repository/word-doc-generator/amortization.xlsx", + "filename": "amortization.xlsx" + }, + { + "label": "template.xlsx", + "legacyPath": "/mnt/storage/sftp/mcelwain/repository/word-doc-generator/template.xlsx", + "filename": "template.xlsx" + } + ], + "fields": { + "debtCollector12Name": "A101", + "debtCollector12AddressLine1": "A103", + "debtCollector13Name": "A105", + "debtCollector13AddressLine1": "A107", + "debtCollector14Name": "A109", + "dob": "A11", + "debtCollector14AddressLine1": "A111", + "debtCollector15Name": "A113", + "debtCollector15AddressLine1": "A115", + "debtCollector16Name": "A117", + "debtCollector16AddressLine1": "A119", + "debtCollector17Name": "A121", + "debtCollector17AddressLine1": "A123", + "debtCollector18Name": "A125", + "debtCollector18AddressLine1": "A127", + "debtCollector19Name": "A129", + "debtCollector19AddressLine1": "A131", + "debtCollector20Name": "A133", + "debtCollector20AddressLine1": "A135", + "debtCollector21Name": "A137", + "debtCollector21AddressLine1": "A139", + "debtCollector22Name": "A141", + "debtCollector22AddressLine1": "A143", + "debtCollector23Name": "A145", + "debtCollector23AddressLine1": "A147", + "debtCollector24Name": "A149", + "caseDesignation": "A15", + "debtCollector24AddressLine1": "A151", + "debtCollector25Name": "A153", + "debtCollector25AddressLine1": "A155", + "debtCollector26Name": "A157", + "debtCollector26AddressLine1": "A159", + "debtCollector27Name": "A161", + "debtCollector27AddressLine1": "A163", + "debtCollector28Name": "A165", + "debtCollector28AddressLine1": "A167", + "debtCollector29Name": "A169", + "caseNumber": "A17", + "debtCollector29AddressLine1": "A171", + "caseSuitAmount": "A19", + "caseAnswerDate": "A21", + "fee": "A25", + "nameOnCard": "A27", + "billingAddress": "A29", + "clientFirstName": "A3", + "settlementAmount": "A32", + "debtCollector1Name": "A39", + "debtCollector1AddressLine1": "A41", + "debtCollector2Name": "A45", + "debtCollector2AddressLine1": "A47", + "client2FirstName": "A5", + "debtCollector3Name": "A51", + "debtCollector3AddressLine1": "A53", + "debtCollector4Name": "A57", + "debtCollector4AddressLine1": "A59", + "debtCollector5Name": "A63", + "debtCollector5AddressLine1": "A65", + "debtCollector6Name": "A69", + "homeAddress": "A7", + "debtCollector6AddressLine1": "A71", + "debtCollector7Name": "A75", + "debtCollector7AddressLine1": "A77", + "debtCollector8Name": "A81", + "debtCollector8AddressLine1": "A83", + "debtCollector9Name": "A87", + "debtCollector9AddressLine1": "A89", + "homeCounty": "A9", + "debtCollector10Name": "A91", + "debtCollector10AddressLine1": "A93", + "debtCollector11Name": "A95", + "debtCollector11AddressLine1": "A97", + "debtCollector12Creditor": "B101", + "debtCollector13Creditor": "B105", + "debtCollector14Creditor": "B109", + "alias": "B11", + "debtCollector15Creditor": "B113", + "debtCollector16Creditor": "B117", + "debtCollector17Creditor": "B121", + "debtCollector18Creditor": "B125", + "debtCollector19Creditor": "B129", + "debtCollector20Creditor": "B133", + "debtCollector21Creditor": "B137", + "debtCollector22Creditor": "B141", + "debtCollector23Creditor": "B145", + "debtCollector24Creditor": "B149", + "caseCounty": "B15", + "debtCollector25Creditor": "B153", + "debtCollector26Creditor": "B157", + "debtCollector27Creditor": "B161", + "debtCollector28Creditor": "B165", + "debtCollector29Creditor": "B169", + "casePlaintiff": "B17", + "caseSuitTheory": "B19", + "caseDivisionNumber": "B21", + "installmentAmount": "B25", + "cardNumber": "B27", + "billingZip": "B29", + "clientMiddleName": "B3", + "notes": "B31", + "settlementInstallmentAmount": "B32", + "debtCollector1Creditor": "B39", + "debtCollector2Creditor": "B45", + "client2MiddleName": "B5", + "debtCollector3Creditor": "B51", + "debtCollector4Creditor": "B57", + "debtCollector5Creditor": "B63", + "debtCollector6Creditor": "B69", + "homeCity": "B7", + "debtCollector7Creditor": "B75", + "debtCollector8Creditor": "B81", + "debtCollector9Creditor": "B87", + "homePhone": "B9", + "debtCollector10Creditor": "B91", + "debtCollector11Creditor": "B95", + "debtCollector12Account": "C101", + "debtCollector12AddressLine2": "C103", + "debtCollector13Account": "C105", + "debtCollector13AddressLine2": "C107", + "debtCollector14Account": "C109", + "clientNameSuffix": "C11", + "debtCollector14AddressLine2": "C111", + "debtCollector15Account": "C113", + "debtCollector15AddressLine2": "C115", + "debtCollector16Account": "C117", + "debtCollector16AddressLine2": "C119", + "debtCollector17Account": "C121", + "debtCollector17AddressLine2": "C123", + "debtCollector18Account": "C125", + "debtCollector18AddressLine2": "C127", + "debtCollector19Account": "C129", + "debtCollector19AddressLine2": "C131", + "debtCollector20Account": "C133", + "debtCollector20AddressLine2": "C135", + "debtCollector21Account": "C137", + "debtCollector21AddressLine2": "C139", + "debtCollector22Account": "C141", + "debtCollector22AddressLine2": "C143", + "debtCollector23Account": "C145", + "debtCollector23AddressLine2": "C147", + "debtCollector24Account": "C149", + "caseState": "C15", + "debtCollector24AddressLine2": "C151", + "debtCollector25Account": "C153", + "debtCollector25AddressLine2": "C155", + "debtCollector26Account": "C157", + "debtCollector26AddressLine2": "C159", + "debtCollector27Account": "C161", + "debtCollector27AddressLine2": "C163", + "debtCollector28Account": "C165", + "debtCollector28AddressLine2": "C167", + "debtCollector29Account": "C169", + "caseDefendant": "C17", + "debtCollector29AddressLine2": "C171", + "caseOriginalCreditor": "C19", + "caseDivisionJudge": "C21", + "installmentDate": "C25", + "securityCode": "C27", + "clientLastName": "C3", + "settlementFirstPaymentDate": "C32", + "debtCollector1Account": "C39", + "debtCollector1AddressLine2": "C41", + "debtCollector2Account": "C45", + "debtCollector2AddressLine2": "C47", + "client2LastName": "C5", + "debtCollector3Account": "C51", + "debtCollector3AddressLine2": "C53", + "debtCollector4Account": "C57", + "debtCollector4AddressLine2": "C59", + "debtCollector5Account": "C63", + "debtCollector5AddressLine2": "C65", + "debtCollector6Account": "C69", + "homeState": "C7", + "debtCollector6AddressLine2": "C71", + "debtCollector7Account": "C75", + "debtCollector7AddressLine2": "C77", + "debtCollector8Account": "C81", + "debtCollector8AddressLine2": "C83", + "debtCollector9Account": "C87", + "debtCollector9AddressLine2": "C89", + "cellPhone": "C9", + "debtCollector10Account": "C91", + "debtCollector10AddressLine2": "C93", + "debtCollector11Account": "C95", + "debtCollector11AddressLine2": "C97", + "debtCollector12Amount": "D101", + "debtCollector13Amount": "D105", + "debtCollector14Amount": "D109", + "debtCollector15Amount": "D113", + "debtCollector16Amount": "D117", + "debtCollector17Amount": "D121", + "debtCollector18Amount": "D125", + "debtCollector19Amount": "D129", + "debtCollector20Amount": "D133", + "debtCollector21Amount": "D137", + "debtCollector22Amount": "D141", + "debtCollector23Amount": "D145", + "debtCollector24Amount": "D149", + "caseDivisionDesignation": "D15", + "debtCollector25Amount": "D153", + "debtCollector26Amount": "D157", + "debtCollector27Amount": "D161", + "debtCollector28Amount": "D165", + "debtCollector29Amount": "D169", + "caseOpposingCounsel": "D17", + "caseAccountNumber": "D19", + "discoCosDate": "D21", + "expiration": "D27", + "SSN": "D3", + "settlementInstallmentNo": "D32", + "debtCollector1Amount": "D39", + "debtCollector2Amount": "D45", + "SSN2": "D5", + "debtCollector3Amount": "D51", + "debtCollector4Amount": "D57", + "debtCollector5Amount": "D63", + "debtCollector6Amount": "D69", + "homeZip": "D7", + "debtCollector7Amount": "D75", + "debtCollector8Amount": "D81", + "debtCollector9Amount": "D87", + "email": "D9", + "debtCollector10Amount": "D91", + "debtCollector11Amount": "D95" + }, + "mode": "datafile" + }, + { + "id": "settlement_amortization", + "label": "Settlement Amortization Calculator", + "description": "Writes settlement values into amortization.xlsx for a quick amortization check.", + "template": "excel/legal_profile/amortization.xlsx", + "mode": "calculator", + "fields": [ + "casePlaintiff", + "settlementAmount", + "settlementFirstPaymentDate", + "settlementInstallmentAmount", + "settlementInstallmentNo", + "settlementInterestRate", + "settlementPaymentsPerYear" + ], + "field_to_cell": { + "settlementAmount": "E3", + "settlementInterestRate": "E4", + "settlementInstallmentNo": "E5", + "settlementPaymentsPerYear": "E6", + "settlementFirstPaymentDate": "E7", + "settlementInstallmentAmount": "I3", + "casePlaintiff": "H9" + }, + "field_count": 7 + } + ] +} \ No newline at end of file diff --git a/tools/doc_generator/content/templates/excel/legal_profile/amortization.xlsx b/tools/doc_generator/content/templates/excel/legal_profile/amortization.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e6e313b665cf5dd7811c7c4e2a79d1f0b3c9fb47 GIT binary patch literal 50551 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 bC-Z;4+-xj`K@afpNrFEHpm<#)@7@0ZCckPw literal 0 HcmV?d00001 diff --git a/tools/doc_generator/content/templates/excel/legal_profile/template.xlsx b/tools/doc_generator/content/templates/excel/legal_profile/template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..40e32e76313c6e7f6b84e5d4475fefc02036e7ab GIT binary patch literal 13413 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 str: + value = str(value or "legacy_export").strip() + value = re.sub(r"[^A-Za-z0-9._ -]+", "", value) + value = re.sub(r"\s+", "_", value) + return value or "legacy_export" + + +def get_excel_map_set_id(document_type_id: str) -> str: + document_type = get_document_type(document_type_id) + return document_type.get("excelMapSet") or document_type_id + + +def load_excel_map_set(document_type_id: str) -> dict: + map_set_id = get_excel_map_set_id(document_type_id) + path = EXCEL_MAPS_DIR / f"{map_set_id}.json" + + if not path.exists(): + raise FileNotFoundError(f"Excel map set not found: {path}") + + return json.loads(path.read_text(encoding="utf-8")) + + +def load_excel_maps(document_type_id: str) -> list[dict]: + return load_excel_map_set(document_type_id).get("maps", []) + + +def load_excel_map(document_type_id: str, map_id: str) -> dict: + for item in load_excel_maps(document_type_id): + if item.get("id") == map_id: + return item + + raise FileNotFoundError(f"Excel map not found for {document_type_id}: {map_id}") + + +def resolve_excel_template(template_name: str) -> Path: + template_name = str(template_name or "").strip() + template_basename = Path(template_name).name + + # Prefer explicit profile-library template paths from the map file. + candidate_paths = [ + TEMPLATES_DIR / template_name, + CONTENT_DIR / "templates" / template_name, + + # Backward-compatible fallbacks. + EXCEL_TEMPLATE_DIR / template_basename, + OLD_WORD_DOC_GENERATOR_DIR / template_basename, + ] + + # Last-resort recursive lookups. + candidate_paths.extend(sorted(TEMPLATES_DIR.rglob(template_basename))) + candidate_paths.extend(sorted(OLD_WORD_DOC_GENERATOR_DIR.rglob(template_basename))) + + template_path = next((candidate for candidate in candidate_paths if candidate.exists()), None) + + if template_path is None: + searched = "\n".join(str(candidate) for candidate in candidate_paths[:30]) + raise FileNotFoundError(f"Excel template not found: {template_name}. Searched:\n{searched}") + + return template_path + + +def cell_parts(cell_ref: str): + col = "".join(ch for ch in cell_ref if ch.isalpha()).upper() + row = int("".join(ch for ch in cell_ref if ch.isdigit())) + return col, row + + +def col_number(col: str) -> int: + total = 0 + for ch in col: + total = total * 26 + (ord(ch) - ord("A") + 1) + return total + + +def cell_sort_key(cell_ref: str): + col, row = cell_parts(cell_ref) + return row, col_number(col) + + +def find_or_create_row(sheet_data, row_number: int): + ns = f"{{{MAIN_NS}}}" + rows = sheet_data.findall(ns + "row") + + for row in rows: + if int(row.attrib.get("r", "0")) == row_number: + return row + + new_row = ET.Element(ns + "row", {"r": str(row_number)}) + + inserted = False + for index, row in enumerate(rows): + if int(row.attrib.get("r", "0")) > row_number: + sheet_data.insert(index, new_row) + inserted = True + break + + if not inserted: + sheet_data.append(new_row) + + return new_row + + +def find_or_create_cell(row, cell_ref: str): + ns = f"{{{MAIN_NS}}}" + cells = row.findall(ns + "c") + + for cell in cells: + if cell.attrib.get("r") == cell_ref: + return cell + + new_cell = ET.Element(ns + "c", {"r": cell_ref}) + + inserted = False + for index, cell in enumerate(cells): + if cell_sort_key(cell.attrib.get("r", "A1")) > cell_sort_key(cell_ref): + row.insert(index, new_cell) + inserted = True + break + + if not inserted: + row.append(new_cell) + + return new_cell + + +def set_cell_text(cell, value): + ns = f"{{{MAIN_NS}}}" + + for child in list(cell): + cell.remove(child) + + cell.attrib.pop("s", None) + cell.attrib["t"] = "inlineStr" + + inline = ET.SubElement(cell, ns + "is") + text = ET.SubElement(inline, ns + "t") + text.text = "" if value is None else str(value) + + +def write_sheet1_values(xlsx_path: Path, output_path: Path, field_to_cell: dict, data: dict): + workbook = load_workbook(xlsx_path) + worksheet = workbook.worksheets[0] + + for field, cell_ref in field_to_cell.items(): + worksheet[cell_ref] = "" if data.get(field) is None else data.get(field, "") + + # Ask Excel-compatible apps to recalculate formulas when the workbook opens. + try: + workbook.calculation.fullCalcOnLoad = True + workbook.calculation.forceFullCalc = True + except Exception: + pass + + workbook.save(output_path) + + +def export_profile_excel(document_type_id: str, data: dict, map_id: str) -> Path: + document_type = get_document_type(document_type_id) + + final_data = merge_core_fields(data) + final_data = apply_calculations(document_type, final_data) + + excel_map = load_excel_map(document_type_id, map_id) + template_name = excel_map.get("template") or "template.xlsx" + template_path = resolve_excel_template(template_name) + + EXPORTS_DIR.mkdir(parents=True, exist_ok=True) + + case_number = safe_filename(final_data.get("caseNumber") or "no_case_number") + timestamp = safe_filename(final_data.get("timestamp_YYYY-MM-DD_HH-mm-ss") or "export") + output_path = EXPORTS_DIR / f"{document_type_id}_{map_id}_{case_number}_{timestamp}.xlsx" + + write_sheet1_values( + xlsx_path=template_path, + output_path=output_path, + field_to_cell=excel_map.get("fields", {}), + data=final_data, + ) + + return output_path + + +# Backward-compatible function name while routes are transitioning. +def export_legacy_excel(document_type_id: str, data: dict, map_id: str = "legacy_datafile") -> Path: + return export_profile_excel(document_type_id, data, map_id)