public FiscalOfdRequest(Operation operation, CheckOperationRequest checkOperationRequest, Kkm kkm, Org org) { Command = CommandTypeEnum.COMMAND_TICKET; Token = kkm.OfdToken; Service = new Service(new RegInfo(org, GetKkm(kkm))); DeviceId = kkm.DeviceId; ReqNum = kkm.ReqNum + 15; Ticket = new Ticket { Operation = operation.Type, Operator = new Operator { Code = operation.User.OperatorCode, Name = operation.User.UserName }, DateTime = GetDateTime(operation), Payments = GetPayments(checkOperationRequest), Items = GetItems(checkOperationRequest), Amounts = new Amount() { Total = new Sum() { Bills = operation.Amount, Coins = 0 } }, Domain = new Domain { Type = 0 }, }; }
private List <Item> GetItems(CheckOperationRequest checkOperationRequest) { var items = new List <Item>(); foreach (var positionType in checkOperationRequest.Positions) { items.Add(GetItem(positionType)); } return(items); }
private static async Task <OfdFiscalResponse> OfdFiscalResponse(CheckOperationRequest checkOperationRequest, Operation operation, Kkm kkm, Org org) { var fiscalOfdRequest = new FiscalOfdRequest(operation, checkOperationRequest, kkm, org); var x = await HttpService.Post(fiscalOfdRequest); string json = JsonConvert.SerializeObject(x); var response = JsonConvert.DeserializeObject <OfdFiscalResponse>(json); return(response); }
private async Task <IActionResult> Response(CheckOperationRequest checkOperationRequest) { var user = _userManager.FindByIdAsync(_helper.ParseId(checkOperationRequest.Token)); var kkm = _applicationContext.Kkms.FirstOrDefault(k => k.SerialNumber == checkOperationRequest.CashboxUniqueNumber); if (user == null) { return(NotFound("Operator not found")); } var shift = await GetShift(user.Result, kkm); var merchant = _userManager.Users.FirstOrDefault(u => u.Id == kkm.UserId); if (merchant == null) { return(Ok(JsonConvert.SerializeObject(_errorHelper.GetErrorRequest(3)))); } var org = new Org { Inn = merchant.Inn, Okved = "o", TaxationType = merchant.TaxationType, Title = merchant.Title }; try { var sum = checkOperationRequest.Payments.Sum(paymentsType => paymentsType.Sum); var checkNumber = GeneratorFiscalSign.GenerateFiscalSign(); var date = DateTime.Now; var qr = GetUrl(kkm, checkNumber.ToString(), sum, date); var operation = GetOperation(shift, checkOperationRequest, date, qr, user.Result, kkm); var kkmResponse = new KkmResponse(operation, shift); var response = await OfdFiscalResponse(checkOperationRequest, operation, kkm, org); operation.FiscalNumber = response.Ticket.TicketNumber; operation.QR = response.Ticket.QrCode; if (kkm == null) { return(Ok(JsonConvert.SerializeObject(_errorHelper.GetErrorRequest(6)))); } kkm.OfdToken = response.Token; await UpdateDatabaseFields(kkm, operation); return(Ok(JsonConvert.SerializeObject(kkmResponse))); } catch (Exception e) { Log.Error(e.Message); Log.Error($"Ошибка авторизации пользователя: {checkOperationRequest.Token}"); return(Ok(_errorHelper.GetErrorRequest((int)ErrorEnums.UNKNOWN_ERROR))); } }
public async Task <IActionResult> Post([FromBody] CheckOperationRequest checkOperationRequest) { try { Log.Information("Check|Post"); Log.Information($"Получение списка касс пользователя: {_userManager}"); Log.Information($"Информация по чеку: {checkOperationRequest.Token}"); _helper.TokenValidator(_userManager, checkOperationRequest.Token); return(await Response(checkOperationRequest)); } catch (Exception e) { Log.Error(e.Message); return(Json(e.Message)); } }
private Operation GetOperation(Shift shift, CheckOperationRequest checkOperationRequest, DateTime date, string qr, User oper, Kkm kkm) { var total = checkOperationRequest.Payments.Sum(p => p.Sum); var cardAmount = checkOperationRequest.Payments .Where(p => p.PaymentType == PaymentTypeEnum.PAYMENT_CARD) .Sum(p => p.Sum); var cashAmount = checkOperationRequest.Payments .Where(p => p.PaymentType == PaymentTypeEnum.PAYMENT_CASH) .Sum(p => p.Sum); var checkNumber = _applicationContext.Operations.Count(s => s.ShiftId == shift.Id) + 1; var operation = new Operation(checkOperationRequest.OperationType, shift.Id, OperationStateEnum.New, false, date, qr, total, checkOperationRequest.Change, cashAmount, cardAmount, oper.Id, kkm.Id, oper, kkm, checkNumber); return(operation); }
private List <Payment> GetPayments(CheckOperationRequest checkOperationRequest) { List <Payment> payments = new List <Payment>(); foreach (var paymentsType in checkOperationRequest.Payments) { payments.Add(new Payment { Sum = new Sum { Bills = paymentsType.Sum, Coins = 0 }, Type = paymentsType.PaymentType }); } return(payments); }