Files
XLAB/XLAB2/PsvModels.cs
Курнат Андрей 7bbca6ba55 edit
2026-03-22 21:44:29 +03:00

666 lines
17 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
namespace XLAB2
{
public sealed class GroupOption
{
public string Key { get; set; }
public string Title { get; set; }
public override string ToString()
{
return Title ?? string.Empty;
}
}
public sealed class CustomerReference
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
public override string ToString()
{
return CustomerName ?? string.Empty;
}
}
public sealed class PsvDocumentSummary : ObservableObject
{
private DateTime? _acceptedOn;
private string _customerName;
private int? _customerId;
private string _departmentName;
private string _documentKey;
private string _documentNumber;
private int _failedCount;
private bool _isDraft;
private int _issuedCount;
private DateTime? _issuedOn;
private int _itemCount;
private int _passedCount;
private string _serialNumbersText;
public DateTime? AcceptedOn
{
get { return _acceptedOn; }
set
{
if (SetProperty(ref _acceptedOn, value))
{
OnPropertyChanged("AcceptedMonthGroup");
RaiseOpenDocumentTimelinePropertiesChanged();
}
}
}
public string AcceptedMonthGroup
{
get { return AcceptedOn.HasValue ? AcceptedOn.Value.ToString("yyyy-MM") : "Без даты"; }
}
public string CustomerName
{
get { return _customerName; }
set { SetProperty(ref _customerName, value); }
}
public int? CustomerId
{
get { return _customerId; }
set { SetProperty(ref _customerId, value); }
}
public string DepartmentName
{
get { return _departmentName; }
set { SetProperty(ref _departmentName, value); }
}
public string DocumentKey
{
get { return _documentKey; }
set { SetProperty(ref _documentKey, value); }
}
public string DocumentNumber
{
get { return _documentNumber; }
set { SetProperty(ref _documentNumber, value); }
}
public string SerialNumbersText
{
get { return _serialNumbersText; }
set { SetProperty(ref _serialNumbersText, value); }
}
public int FailedCount
{
get { return _failedCount; }
set { SetProperty(ref _failedCount, value); }
}
public bool IsDraft
{
get { return _isDraft; }
set { SetProperty(ref _isDraft, value); }
}
public int IssuedCount
{
get { return _issuedCount; }
set { SetProperty(ref _issuedCount, value); }
}
public DateTime? IssuedOn
{
get { return _issuedOn; }
set
{
if (SetProperty(ref _issuedOn, value))
{
RaiseOpenDocumentTimelinePropertiesChanged();
}
}
}
public int ItemCount
{
get { return _itemCount; }
set { SetProperty(ref _itemCount, value); }
}
public int PassedCount
{
get { return _passedCount; }
set { SetProperty(ref _passedCount, value); }
}
public DateTime? DueOn
{
get { return AcceptedOn.HasValue ? AcceptedOn.Value.Date.AddDays(30) : (DateTime?)null; }
}
public string TimelineDisplay
{
get
{
if (IssuedOn.HasValue)
{
return string.Format("Выдача: {0:d}", IssuedOn.Value);
}
return DueOn.HasValue
? string.Format("Срок: {0:d}", DueOn.Value)
: string.Empty;
}
}
public bool IsOpenDocumentOverdue
{
get
{
return !IssuedOn.HasValue
&& DueOn.HasValue
&& DateTime.Today.Date >= DueOn.Value.Date;
}
}
public bool IsOpenDocumentAtTwentyDays
{
get
{
return !IssuedOn.HasValue
&& AcceptedOn.HasValue
&& !IsOpenDocumentOverdue
&& (DateTime.Today.Date - AcceptedOn.Value.Date).TotalDays >= 20;
}
}
public bool IsOpenDocumentAtTenDays
{
get
{
return !IssuedOn.HasValue
&& AcceptedOn.HasValue
&& !IsOpenDocumentOverdue
&& !IsOpenDocumentAtTwentyDays
&& (DateTime.Today.Date - AcceptedOn.Value.Date).TotalDays >= 10;
}
}
private void RaiseOpenDocumentTimelinePropertiesChanged()
{
OnPropertyChanged("DueOn");
OnPropertyChanged("TimelineDisplay");
OnPropertyChanged("IsOpenDocumentOverdue");
OnPropertyChanged("IsOpenDocumentAtTwentyDays");
OnPropertyChanged("IsOpenDocumentAtTenDays");
}
}
public sealed class PsvDocumentLine : ObservableObject
{
private bool _isBatchSelected;
public int CardId { get; set; }
public int InstrumentId { get; set; }
public int TypeSizeId { get; set; }
public string SerialNumber { get; set; }
public string InventoryNumber { get; set; }
public string CustomerName { get; set; }
public string InstrumentType { get; set; }
public string InstrumentName { get; set; }
public string MeasurementArea { get; set; }
public string RangeText { get; set; }
public string RegistryNumber { get; set; }
public string AccuracyText { get; set; }
public string VerificationType { get; set; }
public int PeriodMonths { get; set; }
public DateTime? AcceptedOn { get; set; }
public DateTime? IssuedOn { get; set; }
public bool? IsPassed { get; set; }
public DateTime? VerificationPerformedOn { get; set; }
public int? VerifierId { get; set; }
public string VerifierName { get; set; }
public string StickerNumber { get; set; }
public int? VerificationDocumentFormId { get; set; }
public int? VerificationDocumentLinkTypeId { get; set; }
public string VerificationDocumentNumber { get; set; }
public DateTime? VerificationDocumentDate { get; set; }
public string RejectionReason { get; set; }
public string Notes { get; set; }
public bool IsPendingInsert { get; set; }
public bool IsBatchSelected
{
get { return _isBatchSelected; }
set { SetProperty(ref _isBatchSelected, value); }
}
public string DuplicateKey
{
get
{
return BuildDuplicateKey(InstrumentType, RangeText, RegistryNumber, SerialNumber);
}
}
public string OpenDocumentConflictKey
{
get
{
return BuildOpenDocumentConflictKey(TypeSizeId, SerialNumber);
}
}
public string ResultText
{
get
{
if (!IsPassed.HasValue)
{
return string.Empty;
}
return IsPassed.Value ? "Годен" : "Не годен";
}
}
public string VerificationDateDisplay
{
get
{
var verificationDate = VerificationPerformedOn ?? VerificationDocumentDate;
return verificationDate.HasValue ? verificationDate.Value.ToString("d") : string.Empty;
}
}
public string VerificationDocumentDisplay
{
get
{
if (string.IsNullOrWhiteSpace(VerificationDocumentNumber))
{
return VerificationDocumentDate.HasValue ? VerificationDocumentDate.Value.ToString("d") : string.Empty;
}
if (!VerificationDocumentDate.HasValue)
{
return VerificationDocumentNumber;
}
return string.Format("{0} от {1:d}", VerificationDocumentNumber, VerificationDocumentDate.Value);
}
}
public static string BuildDuplicateKey(string instrumentType, string rangeText, string registryNumber, string serialNumber)
{
return string.Join("|",
NormalizeKeyPart(instrumentType),
NormalizeKeyPart(rangeText),
NormalizeKeyPart(registryNumber),
NormalizeKeyPart(serialNumber));
}
public static string BuildOpenDocumentConflictKey(int typeSizeId, string serialNumber)
{
return string.Format("{0}|{1}", typeSizeId, NormalizeKeyPart(serialNumber));
}
private static string NormalizeKeyPart(string value)
{
return string.IsNullOrWhiteSpace(value) ? string.Empty : value.Trim().ToUpperInvariant();
}
}
public sealed class PsvDocumentGroupSummary : ObservableObject
{
private bool _isBatchSelected;
public string InstrumentType { get; set; }
public string RangeText { get; set; }
public string RegistryNumber { get; set; }
public string SerialNumbersText { get; set; }
public int InVerificationCount { get; set; }
public int VerifiedCount { get; set; }
public int GoodCount { get; set; }
public int RejectedCount { get; set; }
public bool IsBatchSelected
{
get { return _isBatchSelected; }
set { SetProperty(ref _isBatchSelected, value); }
}
public bool Matches(PsvDocumentLine line)
{
return line != null
&& string.Equals(InstrumentType ?? string.Empty, line.InstrumentType ?? string.Empty, StringComparison.OrdinalIgnoreCase)
&& string.Equals(RangeText ?? string.Empty, line.RangeText ?? string.Empty, StringComparison.OrdinalIgnoreCase)
&& string.Equals(RegistryNumber ?? string.Empty, line.RegistryNumber ?? string.Empty, StringComparison.OrdinalIgnoreCase);
}
}
public sealed class AvailableInstrumentItem : ObservableObject
{
private bool _isSelected;
public string AccuracyText { get; set; }
public string CustomerName { get; set; }
public bool HasTemplate { get; set; }
public int InstrumentId { get; set; }
public string InstrumentName { get; set; }
public string InstrumentType { get; set; }
public string InventoryNumber { get; set; }
public bool IsSelected
{
get { return _isSelected; }
set { SetProperty(ref _isSelected, value); }
}
public DateTime? LastAcceptedOn { get; set; }
public string LastDocumentNumber { get; set; }
public string MeasurementArea { get; set; }
public string RangeText { get; set; }
public string RegistryNumber { get; set; }
public string SerialNumber { get; set; }
public string TemplateSource { get; set; }
public int TypeSizeId { get; set; }
}
public sealed class PersonReference
{
public int PersonId { get; set; }
public string FullName { get; set; }
public override string ToString()
{
return FullName ?? string.Empty;
}
}
public sealed class SpnmtpDirectoryItem
{
public int Id { get; set; }
public string Name { get; set; }
public string SpecialName { get; set; }
}
internal sealed class SpnmtpDeleteResult
{
public bool IsDeleted { get; set; }
public string WarningMessage { get; set; }
}
public sealed class SpoiDirectoryItem
{
public int Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
}
internal sealed class SpoiDeleteResult
{
public bool IsDeleted { get; set; }
public string WarningMessage { get; set; }
}
internal static class SpoiDirectoryRules
{
public const int CodeMaxLength = 3;
public const int NameMaxLength = 80;
}
internal static class SpnmtpDirectoryRules
{
public const int NameMaxLength = 150;
public const int SpecialNameMaxLength = 150;
}
public sealed class DocumentFormReference
{
public int DocumentFormId { get; set; }
public int LinkTypeId { get; set; }
public string DocumentKindName { get; set; }
public string DocumentFormName { get; set; }
public override string ToString()
{
return DocumentFormName ?? string.Empty;
}
}
public sealed class DocumentEditorResult
{
public string DocumentNumber { get; set; }
public DateTime AcceptedOn { get; set; }
public DateTime? IssuedOn { get; set; }
public int? CustomerId { get; set; }
}
public sealed class InstrumentTypeSelectionResult
{
public AvailableInstrumentItem TypeItem { get; set; }
public string SerialNumber { get; set; }
}
public sealed class VerificationEditSeed
{
public DocumentFormReference DocumentForm { get; set; }
public bool IsPassed { get; set; }
public string RejectionReason { get; set; }
public string StickerNumber { get; set; }
public DateTime? VerificationDate { get; set; }
public string VerificationDocumentNumber { get; set; }
public int? VerifierId { get; set; }
}
public sealed class CloneVerificationSeed
{
public string SourceSerialNumber { get; set; }
public string VerificationSummary { get; set; }
}
public sealed class VerificationEditResult
{
public int DocumentFormId { get; set; }
public int DocumentLinkTypeId { get; set; }
public bool IsPassed { get; set; }
public string RejectionReason { get; set; }
public string StickerNumber { get; set; }
public DateTime VerificationDate { get; set; }
public string VerificationDocumentNumber { get; set; }
public int VerifierId { get; set; }
public string VerifierName { get; set; }
}
internal sealed class OpenDocumentConflictInfo
{
public string DocumentNumber { get; set; }
public int TypeSizeId { get; set; }
public string SerialNumber { get; set; }
public string OpenDocumentConflictKey
{
get
{
return PsvDocumentLine.BuildOpenDocumentConflictKey(TypeSizeId, SerialNumber);
}
}
}
internal sealed class DocumentDeleteResult
{
public int DeletedEkzMkFctvlCount { get; set; }
public int DeletedEkzMkCount { get; set; }
public int DeletedDmsCount { get; set; }
}
internal sealed class DocumentGroupDeleteResult
{
public int DeletedEkzMkFctvlCount { get; set; }
public int DeletedEkzMkCount { get; set; }
public int DeletedDmsCount { get; set; }
}
internal sealed class DocumentSaveResult
{
public string DocumentNumber { get; set; }
public int InsertedEkzMkCount { get; set; }
public int SkippedDuplicateCount { get; set; }
public int SkippedWithoutTemplateCount { get; set; }
public int UpdatedEkzMkCount { get; set; }
}
internal sealed class EkzMkTemplate
{
public string Dpznmp { get; set; }
public string Hrtcmp { get; set; }
public int? IdEkzetl { get; set; }
public int IdFrpd { get; set; }
public int? IdGrsi { get; set; }
public int? IdKsp { get; set; }
public int? IdKsprl { get; set; }
public int? IdPrsn { get; set; }
public int? IdPrsnpr { get; set; }
public int? IdPrsnsd { get; set; }
public int? IdPrsnvd { get; set; }
public int? IdPrsnvy { get; set; }
public int? IdSpkmmk { get; set; }
public int? IdSpmpob { get; set; }
public int? IdSpmu { get; set; }
public int? IdSpssmp { get; set; }
public int? IdSptsmp { get; set; }
public int? IdSpvdkl { get; set; }
public int? IdSpvdsbmk { get; set; }
public int? IdSpvdmc { get; set; }
public decimal? NcSrmk { get; set; }
public decimal? Nrvrmmp { get; set; }
public decimal? Nrvrmndmp { get; set; }
public int Prmk { get; set; }
public string SourceDescription { get; set; }
public decimal? Stmk { get; set; }
public decimal? Stmkdp { get; set; }
public decimal? Vrmkfk { get; set; }
}
}