Create X-Z Report Receipt Service Request in CRT
Song Nghia - Technical Consultant
private GetReceiptServiceRequest CreateXZReportReceiptServiceRequest(GetXAndZReportReceiptRequest request)
{
ThrowIf.Null(request, nameof(request));
long shiftId = request.ShiftId;
ReceiptType receiptType = request.ReceiptType;
switch (receiptType)
{
case ReceiptType.XReport:
case ReceiptType.ZReport:
Shift entity;
if (receiptType == ReceiptType.XReport)
{
string shiftTerminalId = request.ShiftTerminalId;
entity = this.Context.Execute>((Request)new GetShiftDataRequest(shiftTerminalId, shiftId)).Entity;
if (entity == null || entity.Status != ShiftStatus.Open && entity.Status != ShiftStatus.BlindClosed)
throw new DataValidationException(DataValidationErrors.Microsoft_Dynamics_Commerce_Runtime_ShiftNotFound, string.Format("No open shift information can be found using the shift Id {0} on terminal {1} for X report.", (object)shiftId, (object)shiftTerminalId));
LAW_ShiftCalculator.Calculate(this.Context, entity, entity.TerminalId, entity.ShiftId);
}
else
{
string terminalId = this.Context.GetTerminal().TerminalId;
entity = this.Context.Execute>((Request)new GetLastClosedShiftDataRequest(terminalId)).Entity;
if (entity == null || entity.Status != ShiftStatus.Closed)
throw new DataValidationException(DataValidationErrors.Microsoft_Dynamics_Commerce_Runtime_ShiftNotFound, string.Format("No closed shift information can be found using the shift Id {0} on terminal {1} for Z report.", (object)shiftId, (object)terminalId));
}
return new GetReceiptServiceRequest(entity, new List()
{
receiptType
}.AsReadOnly(), request.HardwareProfileId);
default:
throw new DataValidationException(DataValidationErrors.Microsoft_Dynamics_Commerce_Runtime_ReceiptTypeNotSupported, "Only receipt types for X or Z reports are expected.");
}
}
