コード例 #1
0
        public IActionResult RegisterCashDesk(RegisterCashDeskViewModel model)
        {
            if (User.IsInRole("blocked") || User.IsInRole("operator"))
            {
                return(RedirectToAction("BlockPage", "BlockedUser"));
            }

            var    pattern      = "SWK";
            var    number       = 10000000 + _context.Kkms.Count() + 1;
            string res          = number.ToString().Substring(1);
            string serialNumber = pattern + res;

            var user = _userManager.Users.FirstOrDefault(i => i.Id == model.UserId);

            if (user != null)
            {
                Kkm kkm = new Kkm
                {
                    Name          = model.Name,
                    Description   = model.Description,
                    SerialNumber  = serialNumber,
                    UserId        = user.Id,
                    CurrentStatus = "Создана",
                    Address       = user.Address,
                    Mode          = "Режим отправки в ОФД",
                    NameOrg       = user.Title,
                    Iin           = user.Inn
                };
                _context.Kkms.Add(kkm);
            }

            _context.SaveChanges();

            return(RedirectToAction("GetCashDesk", "InitializeCashDesk", new { id = model.UserId }));
        }
コード例 #2
0
ファイル: CheckController.cs プロジェクト: hirtus/HSCFiscal
 private async Task UpdateDatabaseFields(Kkm kkm, Operation operation)
 {
     kkm.ReqNum += 1;
     _applicationContext.Update(kkm);
     _applicationContext.Operations.Add(operation);
     await _applicationContext.SaveChangesAsync();
 }
コード例 #3
0
 public CloseShiftRequest(Kkm kkm, User org, int shiftNumber)
 {
     Command    = CommandTypeEnum.COMMAND_CLOSE_SHIFT;
     Service    = new Service(new RegInfo(GetOrg(org), GetKkm(kkm)));
     DeviceId   = kkm.DeviceId;
     ReqNum     = kkm.ReqNum;
     Token      = kkm.OfdToken;
     CloseShift = new CloseShift
     {
         IsOffline     = false,
         FrShiftNumber = shiftNumber,
         DateTime      = new DateTime
         {
             Date = new Date
             {
                 Day   = System.DateTime.Now.Day,
                 Month = System.DateTime.Now.Month,
                 Year  = System.DateTime.Now.Year
             },
             Time = new Time
             {
                 Hour   = System.DateTime.Now.Hour,
                 Minute = System.DateTime.Now.Minute,
                 Second = System.DateTime.Now.Second
             }
         }
     };
 }
コード例 #4
0
        public IActionResult ChangeToken(Kkm kkmChange)
        {
            if (User.IsInRole("blocked") || User.IsInRole("operator"))
            {
                return(RedirectToAction("BlockPage", "BlockedUser"));
            }

            try
            {
                if (ModelState.IsValid)
                {
                    var kkm = _context.Kkms.FirstOrDefault(i => i.Id == kkmChange.Id);

                    if (kkm != null)
                    {
                        RequestOfdCashDesk kkmRequest = new RequestOfdCashDesk
                        {
                            FnsKkmId     = kkm.FnsKkmId,
                            DeviceId     = kkm.DeviceId,
                            TokenOfd     = kkmChange.OfdToken,
                            SerialNumber = kkm.SerialNumber,
                            Iin          = kkm.Iin,
                            NameOrg      = kkm.NameOrg,
                            ReqNum       = 56
                        };

                        var response = RequestOfd(kkmRequest);

                        if (response.Result.Result.ResultCode == 0)
                        {
                            ResponseWeb(response, kkm.Id);
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, "Некорректный запрос, попробуйте снова");
                            return(View(new Kkm()
                            {
                                Id = kkmChange.Id
                            }));
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Некорректный запрос, попробуйте снова");
                }
            }
            catch (Exception)
            {
                ModelState.AddModelError(string.Empty, "Некорректный запрос, попробуйте снова");
            }



            return(RedirectToAction("GetCashDesk", "InitializeCashDesk", new { id = kkmChange.UserId }));
        }
コード例 #5
0
ファイル: FiscalOfdRequest.cs プロジェクト: hirtus/HSCFiscal
 private OfdKkm GetKkm(Kkm kkm)
 {
     return(new OfdKkm
     {
         FnsKkmId = kkm.FnsKkmId,
         PointOfPaymentNumber = kkm.PointOfPayment,
         SerialNumber = kkm.SerialNumber,
         TerminalNumber = kkm.TerminalNumber
     });
 }
コード例 #6
0
        public XReportOfdRequestModel(Kkm kkm, User user)
        {
            Command  = CommandTypeEnum.COMMAND_REPORT;
            DeviceId = kkm.DeviceId;
            ReqNum   = kkm.ReqNum;
            Token    = kkm.OfdToken;
            var regInfo = new RegInfo(GetOrg(user), GetKkm(kkm));

            Service = new Service(regInfo);
            Report  = new Report(ReportTypeEnum.REPORT_X, GetDateTime(), false);
        }
コード例 #7
0
ファイル: OfdXReport.cs プロジェクト: hirtus/HSCFiscal
        public async void Request(Kkm kkm, User user)
        {
            var request = new XReportOfdRequestModel(kkm, user);

            try
            {
                Log.Information("OfdXReport|Post");
                Log.Information("Отправка запроса на Х-Отчет в ОФД");
                await HttpService.Post(request);
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
            }
        }
コード例 #8
0
 public XReportKkmResponse(List <ShiftOperation> shiftOperations,
                           IQueryable <Operation> operations,
                           User org, Kkm kkm, Shift shift)
 {
     Data = new Data
     {
         Buy                = GetOperation(shiftOperations, OperationTypeEnum.OPERATION_BUY),
         Sell               = GetOperation(shiftOperations, OperationTypeEnum.OPERATION_SELL),
         ReturnBuy          = GetOperation(shiftOperations, OperationTypeEnum.OPERATION_BUY_RETURN),
         ReturnSell         = GetOperation(shiftOperations, OperationTypeEnum.OPERATION_SELL_RETURN),
         TaxPayerName       = org.UserName,
         TaxPayerVAT        = true,
         TaxPayerIN         = org.Inn,
         TaxPayerVATNumber  = "1231212",
         TaxPayerVATSeria   = "32132",
         CashboxIN          = kkm.DeviceId,
         CashboxSN          = kkm.SerialNumber,
         CashboxRN          = kkm.FnsKkmId,
         StartOn            = shift.OpenDate,
         CloseOn            = shift.CloseDate,
         ReportOn           = DateTime.Now,
         CashierCode        = org.OperatorCode,
         ShiftNumber        = shift.Number,
         ControlSum         = 1,
         DocumentCount      = operations.Count(),
         OfflineMode        = true,
         ReportNumber       = 1,
         CashboxOfflineMode = true,
         EndNonNullable     = new NonNullableApiModel()
         {
             Sell       = shift.SellSaldoEnd,
             Buy        = shift.BuySaldoEnd,
             ReturnBuy  = shift.RetunBuySaldoEnd,
             ReturnSell = shift.RetunSellSaldoEnd
         },
         StartNonNullable = new NonNullableApiModel()
         {
             Sell       = shift.SellSaldoBegin,
             Buy        = shift.BuySaldoBegin,
             ReturnBuy  = shift.RetunBuySaldoBegin,
             ReturnSell = shift.RetunSellSaldoBegin
         },
         SumInCashbox = shift.KkmBalance,
         PutMoneySum  = 0,
         TakeMoneySum = 0
     };
 }
コード例 #9
0
ファイル: ZReportController.cs プロジェクト: hirtus/HSCFiscal
        private async Task <CloseShiftOfdResponse> OfdRequest(Kkm kkm, User org, int shiftNumber)
        {
            var closeShiftRequest = new CloseShiftRequest(kkm, org, shiftNumber);

            try
            {
                Log.Information("OfdCloseShiftRequest|Post");
                Log.Information("Отправка запроса на закрытие смены в ОФД");
                await HttpService.Post(closeShiftRequest);
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
            }

            var x = await HttpService.Post(closeShiftRequest);

            string json     = JsonConvert.SerializeObject(x);
            var    response = JsonConvert.DeserializeObject <CloseShiftOfdResponse>(json);

            return(response);
        }
コード例 #10
0
        private async Task <Shift> GetShift(User oper, Kkm kkm)
        {
            Shift shift;

            if (!_applicationContext.Shifts.Any())
            {
                shift = new Shift
                {
                    OpenDate = DateTime.Now,
                    KkmId    = kkm.Id,
                    Number   = 1,
                    UserId   = oper.Id
                };
                await _applicationContext.Shifts.AddAsync(shift);

                await _applicationContext.SaveChangesAsync();
            }
            else if (_applicationContext.Shifts.Last().CloseDate != DateTime.MinValue)
            {
                shift = new Shift
                {
                    OpenDate            = DateTime.Now,
                    KkmId               = kkm.Id,
                    UserId              = oper.Id,
                    Number              = _applicationContext.Shifts.Last().Number + 1,
                    BuySaldoBegin       = _applicationContext.Shifts.Last().BuySaldoEnd,
                    SellSaldoBegin      = _applicationContext.Shifts.Last().SellSaldoEnd,
                    RetunBuySaldoBegin  = _applicationContext.Shifts.Last().RetunBuySaldoEnd,
                    RetunSellSaldoBegin = _applicationContext.Shifts.Last().RetunSellSaldoEnd,
                };
                await _applicationContext.Shifts.AddAsync(shift);

                await _applicationContext.SaveChangesAsync();
            }

            shift = _applicationContext.Shifts.Last();
            return(shift);
        }
コード例 #11
0
ファイル: AccountController.cs プロジェクト: glokzs/HSCFiscal
        public IActionResult CheckName(RegisterCashDeskViewModel model)
        {
            if (User.IsInRole("blocked"))
            {
                return(RedirectToAction("BlockPage", "BlockedUser"));
            }

            var kkm = new Kkm
            {
                Name        = model.Name,
                Description = model.Description,
            };

            if (_context.Kkms.Any(u => string.Equals(u.Name.Trim(), model.Name) && u.Id == kkm.Id))
            {
                return(Ok(true));
            }
            else if (_context.Kkms.Any(u => string.Equals(u.Name.Trim(), model.Name)))
            {
                return(Ok(false));
            }

            return(Ok(true));
        }
コード例 #12
0
        public async Task <JsonResult> Post([FromBody] Kkm kkm)
        {
            string json = JsonConvert.SerializeObject(kkm, Formatting.Indented);

            return(Json(json));
        }
コード例 #13
0
ファイル: FiscalOfdRequest.cs プロジェクト: hirtus/HSCFiscal
 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
         },
     };
 }
コード例 #14
0
ファイル: CheckController.cs プロジェクト: hirtus/HSCFiscal
        private string GetUrl(Kkm kkm, string checkNumber, decimal sum, DateTime date)
        {
            var dateString = $"{date.Year}{date.Month}{date.Day}T{date.Hour}{date.Minute}{date.Second}";

            return($"http://consumer.test-oofd.kz?i={checkNumber}&f={kkm.FnsKkmId}&s={sum}&t={dateString}");
        }
コード例 #15
0
ファイル: CheckController.cs プロジェクト: hirtus/HSCFiscal
        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);
        }
コード例 #16
0
ファイル: CheckController.cs プロジェクト: hirtus/HSCFiscal
        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);
        }