Пример #1
0
 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
         },
     };
 }
Пример #2
0
        private List <Item> GetItems(CheckOperationRequest checkOperationRequest)
        {
            var items = new List <Item>();

            foreach (var positionType in checkOperationRequest.Positions)
            {
                items.Add(GetItem(positionType));
            }

            return(items);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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)));
            }
        }
Пример #5
0
        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));
            }
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }