edit
This commit is contained in:
@@ -960,14 +960,14 @@ namespace XLAB2
|
||||
|
||||
foreach (var pendingLinesByDocument in _pendingLinesByDocumentKey)
|
||||
{
|
||||
if (string.Equals(pendingLinesByDocument.Key, currentDocument.DocumentKey, StringComparison.OrdinalIgnoreCase))
|
||||
if (MatchesPendingLinesStorageKey(currentDocument, pendingLinesByDocument.Key))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var otherDocument = Documents.FirstOrDefault(delegate(PsvDocumentSummary document)
|
||||
{
|
||||
return string.Equals(document.DocumentKey, pendingLinesByDocument.Key, StringComparison.OrdinalIgnoreCase);
|
||||
return MatchesPendingLinesStorageKey(document, pendingLinesByDocument.Key);
|
||||
});
|
||||
|
||||
if (otherDocument == null
|
||||
@@ -1395,7 +1395,7 @@ namespace XLAB2
|
||||
RunBusyOperation(async delegate
|
||||
{
|
||||
var result = await _service.DeleteDocumentAsync(selectedDocument.DocumentNumber);
|
||||
_pendingLinesByDocumentKey.Remove(selectedDocument.DocumentKey);
|
||||
_pendingLinesByDocumentKey.Remove(GetPendingLinesStorageKey(selectedDocument));
|
||||
await RefreshDocumentsCoreAsync(null, null);
|
||||
_dialogService.ShowInfo(
|
||||
string.Format(
|
||||
@@ -1409,7 +1409,7 @@ namespace XLAB2
|
||||
private void DeleteDraftDocument(PsvDocumentSummary draft)
|
||||
{
|
||||
_draftDocuments.RemoveAll(delegate(PsvDocumentSummary item) { return item.DocumentKey == draft.DocumentKey; });
|
||||
_pendingLinesByDocumentKey.Remove(draft.DocumentKey);
|
||||
_pendingLinesByDocumentKey.Remove(GetPendingLinesStorageKey(draft));
|
||||
Documents.Remove(draft);
|
||||
DocumentsView.Refresh();
|
||||
SelectedDocument = Documents.Count > 0 ? Documents[0] : null;
|
||||
@@ -1885,12 +1885,41 @@ namespace XLAB2
|
||||
return new List<PsvDocumentLine>();
|
||||
}
|
||||
|
||||
var pendingKey = GetPendingLinesStorageKey(document);
|
||||
if (string.IsNullOrWhiteSpace(pendingKey))
|
||||
{
|
||||
return new List<PsvDocumentLine>();
|
||||
}
|
||||
|
||||
List<PsvDocumentLine> lines;
|
||||
return _pendingLinesByDocumentKey.TryGetValue(document.DocumentKey, out lines)
|
||||
return _pendingLinesByDocumentKey.TryGetValue(pendingKey, out lines)
|
||||
? lines
|
||||
: new List<PsvDocumentLine>();
|
||||
}
|
||||
|
||||
private static string GetPendingLinesStorageKey(PsvDocumentSummary document)
|
||||
{
|
||||
if (document == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
if (!document.IsDraft && !string.IsNullOrWhiteSpace(document.DocumentNumber))
|
||||
{
|
||||
return document.DocumentNumber.Trim();
|
||||
}
|
||||
|
||||
return string.IsNullOrWhiteSpace(document.DocumentKey)
|
||||
? string.Empty
|
||||
: document.DocumentKey.Trim();
|
||||
}
|
||||
|
||||
private static bool MatchesPendingLinesStorageKey(PsvDocumentSummary document, string pendingKey)
|
||||
{
|
||||
return !string.IsNullOrWhiteSpace(pendingKey)
|
||||
&& string.Equals(GetPendingLinesStorageKey(document), pendingKey, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
private List<PsvDocumentLine> MergeDocumentLinesForPrint(PsvDocumentSummary document, IEnumerable<PsvDocumentLine> persistedLines)
|
||||
{
|
||||
var mergedLines = new List<PsvDocumentLine>();
|
||||
@@ -2103,11 +2132,17 @@ namespace XLAB2
|
||||
return;
|
||||
}
|
||||
|
||||
var pendingKey = GetPendingLinesStorageKey(SelectedDocument);
|
||||
if (string.IsNullOrWhiteSpace(pendingKey))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
List<PsvDocumentLine> pendingLines;
|
||||
if (!_pendingLinesByDocumentKey.TryGetValue(SelectedDocument.DocumentKey, out pendingLines))
|
||||
if (!_pendingLinesByDocumentKey.TryGetValue(pendingKey, out pendingLines))
|
||||
{
|
||||
pendingLines = new List<PsvDocumentLine>();
|
||||
_pendingLinesByDocumentKey[SelectedDocument.DocumentKey] = pendingLines;
|
||||
_pendingLinesByDocumentKey[pendingKey] = pendingLines;
|
||||
}
|
||||
|
||||
var candidateLines = selectedItems
|
||||
@@ -2220,11 +2255,17 @@ namespace XLAB2
|
||||
return;
|
||||
}
|
||||
|
||||
var pendingKey = GetPendingLinesStorageKey(SelectedDocument);
|
||||
if (string.IsNullOrWhiteSpace(pendingKey))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
List<PsvDocumentLine> pendingLines;
|
||||
if (!_pendingLinesByDocumentKey.TryGetValue(SelectedDocument.DocumentKey, out pendingLines))
|
||||
if (!_pendingLinesByDocumentKey.TryGetValue(pendingKey, out pendingLines))
|
||||
{
|
||||
pendingLines = new List<PsvDocumentLine>();
|
||||
_pendingLinesByDocumentKey[SelectedDocument.DocumentKey] = pendingLines;
|
||||
_pendingLinesByDocumentKey[pendingKey] = pendingLines;
|
||||
}
|
||||
|
||||
var serialNumber = string.IsNullOrWhiteSpace(result.SerialNumber) ? string.Empty : result.SerialNumber.Trim();
|
||||
@@ -2234,6 +2275,12 @@ namespace XLAB2
|
||||
return;
|
||||
}
|
||||
|
||||
if (serialNumber.Length > EkzDirectoryRules.SerialNumberMaxLength)
|
||||
{
|
||||
_dialogService.ShowWarning(string.Format("Заводской номер не должен превышать {0} символов.", EkzDirectoryRules.SerialNumberMaxLength));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!result.TypeItem.HasTemplate)
|
||||
{
|
||||
_dialogService.ShowWarning("Выбранный тип нельзя добавить: для него не найден шаблон EKZMK, период из TPRMCP или регистрационный период TIPS.");
|
||||
@@ -2541,13 +2588,14 @@ namespace XLAB2
|
||||
|
||||
var currentDocumentNumber = selectedDocument.IsDraft ? null : selectedDocument.DocumentNumber;
|
||||
var documentKey = selectedDocument.DocumentKey;
|
||||
var documentPendingKey = GetPendingLinesStorageKey(selectedDocument);
|
||||
var wasDraft = selectedDocument.IsDraft;
|
||||
var closingNow = !selectedDocument.IssuedOn.HasValue && request.IssuedOn.HasValue;
|
||||
var printDocument = closingNow ? CreateSavedDocumentSummaryForPrint(selectedDocument, request) : null;
|
||||
var documentLinesSnapshot = DocumentLines.ToList();
|
||||
var result = await Task.Run(delegate { return _service.SaveDocument(currentDocumentNumber, request, documentLinesSnapshot); });
|
||||
|
||||
_pendingLinesByDocumentKey.Remove(documentKey);
|
||||
_pendingLinesByDocumentKey.Remove(documentPendingKey);
|
||||
if (wasDraft)
|
||||
{
|
||||
_draftDocuments.RemoveAll(delegate(PsvDocumentSummary draft) { return draft.DocumentKey == documentKey; });
|
||||
|
||||
Reference in New Issue
Block a user