Сообщения без ответов | Активные темы Текущее время: Ср апр 17, 2024 1:37 am



Ответить на тему  [ Сообщений: 2 ] 
Ошибка фискальной операции "Возврат продажи" 
Автор Сообщение
Новичок

Зарегистрирован: Пт фев 12, 2010 8:04 am
Сообщения: 96
Откуда: Кузбасс
Сообщение Ошибка фискальной операции "Возврат продажи"
Делаю модуль управления ФР по документации "Протокол работы ФР" для Штрих-М-ФР-К.

КУСОК КОДА:

Код:
private void RegistrationProduct(double Quantity, double Price, string PosName, byte typeRegistation)
        {
            StatusFRType temp_statusFR = statusFR;
            int _Quantity = (int)(Quantity * 1000);
            int _Price = (int)(Price*100);
            byte[] BuffToFR = new byte[60];
            byte[] BuffFromFR = new byte[3];
            BuffToFR[0] = typeRegistation;
            BuffToFR[1] = 30;
            BuffToFR[2] = 0;
            BuffToFR[3] = 0;
            BuffToFR[4] = 0;
            BuffToFR[5] = (byte)(_Quantity >> 0);
            BuffToFR[6] = (byte)(_Quantity >> 8);
            BuffToFR[7] = (byte)(_Quantity >> 16);
            BuffToFR[8] = (byte)(_Quantity >> 24);
            BuffToFR[9] = 0;
            BuffToFR[10] = (byte)(_Price >> 0);
            BuffToFR[11] = (byte)(_Price >> 8);
            BuffToFR[12] = (byte)(_Price >> 16);
            BuffToFR[13] = (byte)(_Price >> 24);
            BuffToFR[14] = 0; ;
            BuffToFR[15] = 0;//номер отдела
            BuffToFR[16] = 0;//налог 1
            BuffToFR[17] = 0;//налог 2
            BuffToFR[18] = 0;//налог 3
            BuffToFR[19] = 0;//налог 4

            string _PosName = PosName.Substring(0,PosName.Length >= 40 ? 40 : PosName.Length);
            byte[] unicodeBytes = Encoding.Unicode.GetBytes(_PosName);
            byte[] asciiBytes = Encoding.Convert(Encoding.Unicode, System.Text.Encoding.GetEncoding(1251), unicodeBytes);
            int i = 0; 
            foreach (byte c in asciiBytes)   
                    BuffToFR[20 + (i++)] = c;

            int error= SendCommand(BuffToFR, BuffToFR.Length, BuffFromFR, BuffFromFR.Length);     
}
public int SendCommand(byte[] BuffToFR, int BuffLen, byte[] BuffFromFR, int AnswerLen)
        {
            int AnswerError = -1;
            WaitNAK();
            WaitNAK();
            byte[] RawBuffToFR = new byte[1024];

            RawBuffToFR[0] = ANSWER_STX;
            RawBuffToFR[1] = (byte)BuffLen;
            //копируем команду
            for (int i = 0; i < BuffLen; i++)
                RawBuffToFR[i + 2] = BuffToFR[i];
            //считаем контрольную сумму
            byte LRC = 0;
            for (int i = 1; i <= BuffLen + 2; i++)
                LRC ^= RawBuffToFR[i];
            RawBuffToFR[BuffLen + 2] = LRC;

            //отправляем данные в ФР
            SerialPortFR.Write(RawBuffToFR, 0, BuffLen + 3);
           
            //читаем ответ
            return AnswerError = ReadAnswer(BuffFromFR, AnswerLen);
        }


понимаю, что читать чужой код тяжело, но не знаю как по другому осветить проблему.
Если typeRegistation равен 80H(продажа), то все проходит без ошибок.
Если 82H (Возврат продажи), то ФР возвращает ошибку 5Eh( ФР,Некорректная операция)

В документации все параметры продажи и возврата продаж одинаковы.
Режим ФР 8 - чек открыт.

И еще вопрос - как различить режимы чек открыт 8 и продажа 8.0 ?


Ср апр 21, 2010 8:46 am
Профиль ICQ
Новичок

Зарегистрирован: Пт фев 12, 2010 8:04 am
Сообщения: 96
Откуда: Кузбасс
Сообщение 
вопрос снят. оказалось что сама операция продажи или возврата открывает чек своего типа. и соответсвенно операция открытия чека по умолчанию выставляет режим продажи, где уже нельзя делать возврат.
зачем тогда операция открытия чека, непонятно...


Ср апр 21, 2010 9:04 am
Профиль ICQ
Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 2 ] 

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF.
Русская поддержка phpBB