Пример #1
0
        /// <summary>
        /// Оплата
        /// </summary>
        public void Payment(PaymentDocument document)
        {
            switch (document.PaymentReason)
            {
            case PaymentReason.Parking:
            case PaymentReason.Fine:
            case PaymentReason.ECash:
            case PaymentReason.Any:
                memory.MoneyInKKM += document.Amount;
                memory.Save();
                break;

            case PaymentReason.Refund:
                if (document.Amount > memory.MoneyInKKM)
                {
                    throw new FiscalDeviceException("Недостаточно денег для возврата");
                }

                memory.MoneyInKKM -= document.Amount;
                memory.Save();
                break;
            }
        }
Пример #2
0
        /// <summary>
        /// Оплата
        /// </summary>
        public void Payment(PaymentDocument doc)
        {
            int nErr;

            // Открыть сеанс
            OpenSessionInternal();

            // проверим смену
            if (!_GetOpened())
            {
                throw new FiscalDeviceException("Для проведения оплаты необходимо предварительно открыть смену!");
            }


            //Формирование чека
            SetCurrentMoney((double)doc.Amount);

            _SetCurrentDocType((int)doc.Type);
            _SetCurrentPayType((int)doc.PaymentType); // Тип = Наличные
            //Settings.Default.CashNumber.ToString()
            _SetCashierName(_cashName);
            _SetCashierID(0);

            _ClearRequisites();
            String sCardNum = Convert.ToString(doc.CardId, 16);

            switch (doc.PaymentReason)
            {
            case PaymentReason.Parking:
                _AddRequisite(1, 1, 1, "Оплата услуг парковки");
                _AddRequisite(2, 1, 1, "Парковочная карта: " + sCardNum.ToUpper());
                _AddRequisite(3, 1, 1, "Время въезда: " + String.Format("{0:G}", doc.TimeEntry));
                _AddRequisite(4, 1, 1, "Выезд до :    " + String.Format("{0:G}", doc.TimeExit));
                _AddRequisite(5, 1, 1, "Оплачено: " + Utils.TimeToString(doc.TimeExit - doc.TimeEntry));
                if (doc.Payment <= 0)
                {
                    _AddRequisite(6, 1, 1, "                 ");
                }
                else
                {
                    _AddRequisite(6, 1, 1, "Оплачено ранее: " + String.Format("{0:C}", doc.Payment));
                }
                break;

            case PaymentReason.Fine:
                _AddRequisite(1, 1, 1, "Оплата услуг парковки - ШТРАФ");
                _AddRequisite(2, 1, 1, "Парковочная карта: " + sCardNum.ToUpper());
                _AddRequisite(3, 1, 1, "Время въезда: " + String.Format("{0:G}", doc.TimeEntry));
                _AddRequisite(4, 1, 1, "Выезд до :    " + String.Format("{0:G}", doc.TimeExit));
                _AddRequisite(5, 1, 1, "Оплачено: " + Utils.TimeToString(doc.TimeExit - doc.TimeEntry));
                if (doc.Payment / 100 <= 0)
                {
                    _AddRequisite(6, 1, 1, "                 ");
                }
                else
                {
                    _AddRequisite(6, 1, 1, "Оплачено ранее: " + String.Format("{0:C}", doc.Payment));
                }
                break;

            case PaymentReason.ECash:
                _AddRequisite(1, 1, 1, "Пополнение эл. кошелька");
                _AddRequisite(2, 1, 1, "Парковочная карта: " + sCardNum.ToUpper());
                break;

            case PaymentReason.Any:
                break;

            case PaymentReason.Refund:
                _AddRequisite(1, 1, 1, "Возврат");
                break;

            default:
                break;
            }

            _WholeCheck();
            WaitForOperation();
            nErr = _GetErrorNumber();
            if (nErr != 0)
            {
                throw new FiscalDeviceException(nErr, "Ошибка печати чека. Проверьте ККМ и повторите операцию.");
            }
        }
        /// <summary>
        /// Оплата
        /// </summary>
        public void Payment(PaymentDocument doc)
        {
            int nError;
            int row = 0;

            // проверим смену
            if (!IsSessionOpened)
            {
                throw new FiscalDeviceException("Для проведения оплаты необходимо предварительно открыть смену!");
            }


            //Формирование чека

            nError = OpenFiscalDoc((byte)doc.Type, (byte)doc.PaymentType, 0, 1, 1, 2, 32, 3, 24, (int)doc.Amount * 100);
            if (nError != 0)
            {
                throw new FiscalDeviceException(nError, "Ошибка формирования чека.");
            }

            ChangeOpName(cashierName);

            String sCardNum = Convert.ToString(doc.CardId, 16);

            switch (doc.PaymentReason)
            {
            case PaymentReason.Parking:
                AddFreeField(4, 1, 1, 1, 0, "Оплата услуг парковки");
                AddFreeField(5, 1, 1, 1, 0, "Парковочная карта: " + sCardNum.ToUpper());
                AddFreeField(6, 1, 1, 1, 0, "Время въезда: " + String.Format("{0:G}", doc.TimeEntry));
                AddFreeField(7, 1, 1, 1, 0, "Выезд до :    " + String.Format("{0:G}", doc.TimeExit));
                AddFreeField(8, 1, 1, 1, 0, "Оплачено: " + Utils.TimeToString(doc.TimeExit - doc.TimeEntry));
                if (doc.Payment <= 0)
                {
                    AddFreeField(9, 1, 1, 1, 0, "                 ");
                }
                else
                {
                    AddFreeField(9, 1, 1, 1, 0, "Оплачено ранее: " + String.Format("{0:C}", doc.Payment));
                }
                row = 6;
                break;

            case PaymentReason.Fine:
                AddFreeField(4, 1, 1, 1, 0, "Оплата услуг парковки - ШТРАФ");
                AddFreeField(5, 1, 1, 1, 0, "Парковочная карта: " + sCardNum.ToUpper());
                AddFreeField(6, 1, 1, 1, 0, "Время въезда: " + String.Format("{0:G}", doc.TimeEntry));
                AddFreeField(7, 1, 1, 1, 0, "Выезд до :    " + String.Format("{0:G}", doc.TimeExit));
                AddFreeField(8, 1, 1, 1, 0, "Оплачено: " + Utils.TimeToString(doc.TimeExit - doc.TimeEntry));
                if (doc.Payment / 100 <= 0)
                {
                    AddFreeField(9, 1, 1, 1, 0, "                 ");
                }
                else
                {
                    AddFreeField(9, 1, 1, 1, 0, "Оплачено ранее: " + String.Format("{0:C}", doc.Payment));
                }
                row = 6;
                break;

            case PaymentReason.ECash:
                AddFreeField(4, 1, 1, 1, 0, "Пополнение эл. кошелька");
                AddFreeField(5, 1, 1, 1, 0, "Парковочная карта: " + sCardNum.ToUpper());
                row = 2;
                break;

            case PaymentReason.Any:
                break;

            case PaymentReason.Refund:
                AddFreeField(4, 1, 1, 1, 0, "Возврат");
                row = 1;
                break;
            }

            AddPosField(1, 12, 1, 1, 34, 1, 2, 2, 1, 2, 34, 1, 5 + row, 26, 1, 3, 9, 1, 4 + row, 9, 1);

            AddFreeField(1, 1, 1, 1, 0, "Серийный № ");
            AddFreeField(1, 24, 1, 1, 0, "Док № ");
            AddFreeField(3, 1, 1, 1, 0, "Касса № ");
            AddFreeField(5 + row, 16, 1, 1, 0, "ИНН: ");
            AddFreeField(4 + row, 1, 1, 1, 0, "ИТОГО: ");

            nError = PrintFiscalReceipt();
            if (nError != 0)
            {
                throw new FiscalDeviceException(nError, "Ошибка печати чека. Проверьте ККМ и повторите операцию.");
            }
        }