/// <summary> /// Method to complete cash drop /// </summary> /// <param name="selectedTenders">Selected tenders</param> /// <param name="tillNumber">Till number</param> /// <param name="userCode">User code</param> /// <param name="registerNumber">Register number</param> /// <param name="reason">Reason code</param> /// <param name="envelopeNumber">Envelope number</param> /// <param name="copies">Copies</param> /// <param name="error">Error</param> /// <returns>Stream</returns> public FileStream CompleteCashDrop(List <Tender> selectedTenders, int tillNumber, string userCode, byte registerNumber, string reason, string envelopeNumber, out int copies, out ErrorMessage error) { var dateStart = DateTime.Now; _performancelog.Debug($"Start,CashManager,CompleteCashDrop,{string.Empty},{dateStart:hh.mm.ss.ffffff}"); copies = _policyManager.CashDropReceiptCopies; var offSet = _policyManager.LoadStoreInfo().OffSet; error = new ErrorMessage(); Till till = _tillService.GetTill(tillNumber); if (till == null) { error.MessageStyle = new MessageStyle { Message = "Till does not exists" }; error.StatusCode = System.Net.HttpStatusCode.NotFound; return(null); } User user = _loginManager.GetExistingUser(userCode); if (!Convert.ToBoolean(_policyManager.GetPol("U_TILLDROP", user))) { MessageType temp_VbStyle3 = (int)MessageType.Exclamation + MessageType.OkOnly; error.MessageStyle = _resourceManager.CreateMessage(offSet, 38, 55, null, temp_VbStyle3); error.StatusCode = System.Net.HttpStatusCode.Forbidden; return(null); } var dropDate = DateTime.Now; if (!IsValidReason(reason)) { error.MessageStyle = new MessageStyle { Message = "Invalid reason" }; error.StatusCode = System.Net.HttpStatusCode.NotFound; return(null); } if (_policyManager.DropEnv && string.IsNullOrEmpty(envelopeNumber)) { error.MessageStyle = _resourceManager.CreateMessage(offSet, 12, 65, null, MessageType.OkOnly); error.StatusCode = System.Net.HttpStatusCode.NotFound; return(null); } var bt = Convert.ToString(_policyManager.BASECURR); var cntDrop = _cashService.GetMaxCashDrop(till.Number, till.ShiftDate, till.Shift); var tenders = _tenderManager.Load(null, "CashDrop", false, reason, out error); var cashDropTenders = GetCashDropTenders(selectedTenders, tenders, 0, out error); if (!string.IsNullOrEmpty(error.MessageStyle.Message)) { return(null); } CashDrop cashDrop = new CashDrop { Envelope_No = envelopeNumber, ReasonCode = reason, DropID = _cashService.GetMaxDropId(DataSource.CSCTills) }; // - adding the unique dropid (max drop number) if (cashDrop.DropID == 0) { var dropId = _cashService.GetMaxDropId(DataSource.CSCTrans); cashDrop.DropID = dropId == 0 ? 1 : dropId; } // var fs = _receiptManager.PrintDrop(cashDropTenders, till, user, registerNumber, cashDrop, cntDrop); AddDropHeader(tillNumber, userCode, till, dropDate, cntDrop, cashDrop); AddDropLines(till, bt, dropDate, cashDropTenders, cashDrop); CacheManager.DeleteTendersForCashDrop("CashDrop", reason); _performancelog.Debug($"End,CashManager,CompleteCashDrop,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(fs); }