фискальник обновлен

добавил новые параметры, новый режим и т.д.
This commit is contained in:
Dmitriy 2021-04-15 23:11:19 +03:00
parent 09523d777e
commit 6f53fb9d61
37 changed files with 6359 additions and 6707 deletions

View File

@ -495,6 +495,28 @@ int FiscPrintDayReportToBuf(CPU_INT32U admpass, CPU_INT08U* err)
return FISC_OK;
}
// îòêðûòü ñìåíó
int FiscOpenDay(CPU_INT32U pass, CPU_INT08U* err)
{
CPU_INT08U* rxdat;
CPU_INT08U len;
*err = 0;
if (FiscSendCommand(FISC_OPEN_DAY, (CPU_INT08U*)&pass, 4) != FISC_OK) {return FISC_ERR;}
if (FiscReceiveAnswer(&rxdat, &len, FISC_ANSWER_TIMEOUT) != FISC_OK) {return FISC_ERR;}
*err = rxdat[1];
if (3 != len) {return FISC_ERR;}
if ((rxdat[0] != FISC_OPEN_DAY) || (rxdat[1] != 0)) {return FISC_ERR;}
return FISC_OK;
}
// ńóňî÷íűé îň÷ĺň c ăŕřĺíčĺě â áóôĺđ
int FiscPrintDayReportsFromBuf(CPU_INT32U admpass, CPU_INT08U* err)
{
@ -752,6 +774,53 @@ int FiscMakeSell(CPU_INT32U pass,
return FISC_OK;
}
// çàðåãèñòðèðîâàòü ïðîäàæó
int FiscMakeSellV2(CPU_INT32U pass,
CPU_INT64U *count, CPU_INT64U *price, CPU_INT08U department,
CPU_INT08U* tax, CPU_INT08U subj, char* text, CPU_INT08U* err)
{
CPU_INT08U* rxdat;
CPU_INT08U len;
static const CPU_INT08U subj_tbl[3] = {1, 3, 4};
fisc_buf[0] = 0x46; // êîìàíäà 0xFF46
memcpy(&fisc_buf[1], (CPU_INT08U*)&pass, 4);
fisc_buf[5] = 0x01; // òèï îïåðàöèè 1 - ïðèõîä
memcpy(&fisc_buf[6], (CPU_INT08U*)count, 6); // êîëè÷åñòâî 6 áàéò, 6 çíàêîâ ïîñëå çàïÿòîé
memcpy(&fisc_buf[12], (CPU_INT08U*)price, 5); // öåíà
fisc_buf[17] = 0xFF; // ñóììà ðàññ÷èòûâàåòñÿ êàññîé
fisc_buf[18] = 0xFF;
fisc_buf[19] = 0xFF;
fisc_buf[20] = 0xFF;
fisc_buf[21] = 0xFF;
fisc_buf[22] = 0xFF; // íàëîã íå óêàçàí (ðàññ÷èòûâàåòñÿ êàññîé)
fisc_buf[23] = 0xFF;
fisc_buf[24] = 0xFF;
fisc_buf[25] = 0xFF;
fisc_buf[26] = 0xFF;
if (tax[0]) fisc_buf[27] = 1 << (tax[0] - 1);
else fisc_buf[27] = 0;
fisc_buf[28] = department;
fisc_buf[29] = 0x04; // ïðèçíàê ñïîñîáà ðàñ÷åòà 4 - "ïîëíûé ðàñ÷åò"
if (subj > 2) subj = 0;
fisc_buf[30] = subj_tbl[subj]; // ïðèçíàê ïðåäìåòà ðàñ÷åòà
memset(&fisc_buf[31], 0, 40); // íàèìåíîâàíèå
strcpy((char*)&fisc_buf[31], text);
if (FiscSendCommand(FISC_EXTENDED_CMD, fisc_buf, 71) != FISC_OK) {return FISC_ERR;}
memset(fisc_buf, 0, 256);
if (FiscReceiveAnswer(&rxdat, &len, FISC_ANSWER_TIMEOUT) != FISC_OK) {return FISC_ERR;}
*err = rxdat[2];
if (3 != len) {return FISC_ERR;}
if ((rxdat[0] != FISC_EXTENDED_CMD) || (rxdat[1] != 0x46) || (rxdat[2] != 0)) {return FISC_ERR;}
return FISC_OK;
}
// çŕęđűňčĺ ÷ĺęŕ
int FiscCloseBill(CPU_INT32U pass, CPU_INT64U *cash, CPU_INT08U* tax, char* text, CPU_INT08U* err)
@ -762,9 +831,10 @@ int FiscCloseBill(CPU_INT32U pass, CPU_INT64U *cash, CPU_INT08U* tax, char* text
memcpy(&fisc_buf[0], (CPU_INT08U*)&pass, 4);
memcpy(&fisc_buf[4], cash, 5);
memset(&fisc_buf[9], 0, 15+2);
memcpy(&fisc_buf[26], tax, 4);
memset(&fisc_buf[30], 0, 40);
strcpy((char*)&fisc_buf[70], text);
strcpy((char*)&fisc_buf[30], text);
if (FiscSendCommand(FISC_CLOSE_BILL, fisc_buf, 70) != FISC_OK) {return FISC_ERR;}
@ -779,6 +849,43 @@ int FiscCloseBill(CPU_INT32U pass, CPU_INT64U *cash, CPU_INT08U* tax, char* text
return FISC_OK;
}
// çàêðûòèå ÷åêà
int FiscCloseBillV2(CPU_INT32U pass, CPU_INT64U *cash, CPU_INT08U taxsys, char* text, CPU_INT08U* err)
{
CPU_INT08U* rxdat;
CPU_INT08U len;
fisc_buf[0] = 0x45;
memcpy(&fisc_buf[1], (CPU_INT08U*)&pass, 4);
memcpy(&fisc_buf[5], cash, 5);
memset(&fisc_buf[10], 0, 75);
fisc_buf[85] = 0x00; // îêðóãëåíèå äî ðóáëÿ â êîïåéêàõ
memset(&fisc_buf[86], 0, 5); // íàëîã 1
memset(&fisc_buf[91], 0, 5); // íàëîã 2
memset(&fisc_buf[96], 0, 5); // íàëîã 3
memset(&fisc_buf[101], 0, 5); // íàëîã 4
memset(&fisc_buf[106], 0, 5); // íàëîã 5
memset(&fisc_buf[111], 0, 5); // íàëîã 6
fisc_buf[116] = (1 << taxsys);
memset(&fisc_buf[117], 0, 40);
strcpy((char*)&fisc_buf[117], text);
if (FiscSendCommand(FISC_EXTENDED_CMD, fisc_buf, 157) != FISC_OK) {return FISC_ERR;}
memset(fisc_buf, 0, 256);
if (FiscReceiveAnswer(&rxdat, &len, FISC_ANSWER_TIMEOUT) != FISC_OK) {return FISC_ERR;}
*err = rxdat[2];
//if (8 != len) {return FISC_ERR;}
if ((rxdat[0] != FISC_EXTENDED_CMD) || (rxdat[1] != 0x45) || (rxdat[2] != 0)) {return FISC_ERR;}
return FISC_OK;
}
// ďđîäîëćĺíčĺ ďĺ÷ŕňč (ďîńëĺ îňńóňńňâč˙ áóěŕăč)
int FiscPrintContinue(CPU_INT32U pass, CPU_INT08U* err)
{
@ -800,3 +907,91 @@ int FiscPrintContinue(CPU_INT32U pass, CPU_INT08U* err)
return FISC_OK;
}
/// ÷òåíèå çíà÷åíèÿ èç òàáëèöû
int FiscReadTableData(CPU_INT32U pass, CPU_INT08U table, CPU_INT16U row, CPU_INT08U field, CPU_INT08U field_len, CPU_INT08U* data, CPU_INT08U* err)
{
CPU_INT08U* rxdat;
CPU_INT08U len;
CPU_INT08U req[8];
*err = 0;
memcpy(&req[0], &pass, 4);
memcpy(&req[4], &table, 1);
memcpy(&req[5], &row, 2);
memcpy(&req[7], &field, 1);
if (FiscSendCommand(FISC_READ_TABLE, (CPU_INT08U*)&req, 8) != FISC_OK) {return FISC_ERR;}
if (FiscReceiveAnswer(&rxdat, &len, FISC_ANSWER_TIMEOUT) != FISC_OK) {return FISC_ERR;}
*err = rxdat[1];
if ((field_len + 2) != len) {return FISC_ERR;}
if ((rxdat[0] != FISC_READ_TABLE) || (rxdat[1] != 0)) {return FISC_ERR;}
memcpy(data, &rxdat[2], field_len);
return FISC_OK;
}
/// çàïèñü çíà÷åíèÿ â òàáëèöó
int FiscWriteTableData(CPU_INT32U pass, CPU_INT08U table, CPU_INT16U row, CPU_INT08U field, CPU_INT08U field_len, CPU_INT08U* data, CPU_INT08U* err)
{
CPU_INT08U* rxdat;
CPU_INT08U len;
memcpy(&fisc_buf[0], (CPU_INT08U*)&pass, 4);
memcpy(&fisc_buf[4], &table, 1);
memcpy(&fisc_buf[5], &row, 2);
memcpy(&fisc_buf[7], &field, 1);
memcpy(&fisc_buf[8], &data, field_len);
if (FiscSendCommand(FISC_WRITE_TABLE, fisc_buf, 8 + field_len) != FISC_OK) {return FISC_ERR;}
if (FiscReceiveAnswer(&rxdat, &len, FISC_ANSWER_TIMEOUT) != FISC_OK) {return FISC_ERR;}
*err = rxdat[1];
if (3 != len) {return FISC_ERR;}
if ((rxdat[0] != FISC_WRITE_TABLE) || (rxdat[1] != 0)) {return FISC_ERR;}
return FISC_OK;
}
// Àäìèí.îòìåíà ÷åêà
int FiscCanselBill(CPU_INT32U pass, CPU_INT08U* err)
{
CPU_INT08U* rxdat;
CPU_INT08U len;
memcpy(&fisc_buf[0], (CPU_INT08U*)&pass, 4);
if (FiscSendCommand(FISC_CANSEL_BILL, fisc_buf, 4) != FISC_OK)
{
return FISC_ERR;
}
if (FiscReceiveAnswer(&rxdat, &len, FISC_ANSWER_TIMEOUT) != FISC_OK)
{
return FISC_ERR;
}
*err = rxdat[1];
if (3 != len)
{
return FISC_ERR;
}
if ((rxdat[0] != FISC_CANSEL_BILL) || (rxdat[1] != 0))
{
return FISC_ERR;
}
return FISC_OK;
}

View File

@ -59,12 +59,20 @@ extern CPU_INT08U FiscalState;
#define FISC_MAKE_SELL 0x80
#define FISC_CLOSE_BILL 0x85
#define FISC_CANSEL_BILL 0x88
#define FISC_EXTENDED_CMD 0xFF
#define FISC_OPEN_DAY 0xE0
#define FISC_PRINT_CONTINUE 0xB0
#define FISC_PRINT_DAY_REPORT_TO_BUF 0xC6
#define FISC_PRINT_DAY_REPORT_FROM_BUF 0xC7
#define FISC_WRITE_TABLE 0x1E
#define FISC_READ_TABLE 0x1F
// ïåðåîïðåäåëåíèå ôóíêöèé ïåðåäà÷è
#define FiscPurgeRx Uart0_Flush
#define FiscUartSend Uart0_Send
@ -83,165 +91,128 @@ extern CPU_INT08U FiscalState;
#define FISC_ERR -1
// êîäû îøèáîê ÔÐ
#define FR_ERROR_CODE_1 0x1 //Íåèñïðàâåí íàêîïèòåëü ÔÏ 1, ÔÏ 2 èëè ÷àñû
#define FR_ERROR_CODE_2 0x2 //Îòñóòñòâóåò ÔÏ 1
#define FR_ERROR_CODE_3 0x3 //Îòñóòñòâóåò ÔÏ 2
#define FR_ERROR_CODE_4 0x4 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå îáðàùåíèÿ ê ÔÏ
#define FR_ERROR_CODE_5 0x5 //Íåò çàïðîøåííûõ äàííûõ
#define FR_ERROR_CODE_6 0x6 //ÔÏ â ðåæèìå âûâîäà äàííûõ
#define FR_ERROR_CODE_7 0x7 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå äëÿ äàííîé ðåàëèçàöèè ÔÏ
#define FR_ERROR_CODE_8 0x8 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîé ðåàëèçàöèè ÔÏ
#define FR_ERROR_CODE_9 0x9 //Íåêîððåêòíàÿ äëèíà êîìàíäû
#define FR_ERROR_CODE_a 0x0A //Ôîðìàò äàííûõ íå BCD
#define FR_ERROR_CODE_b 0x0B //Íåèñïðàâíà ÿ÷åéêà ïàìÿòè ÔÏ ïðè çàïèñè èòîãà
#define FR_ERROR_CODE_11 0x11 //Íå ââåäåíà ëèöåíçèÿ
#define FR_ERROR_CODE_12 0x12 //Çàâîäñêîé íîìåð óæå ââåäåí
#define FR_ERROR_CODE_13 0x13 //Òåêóùàÿ äàòà ìåíüøå äàòû ïîñëåäíåé çàïèñè â ÔÏ
#define FR_ERROR_CODE_14 0x14 //Îáëàñòü ñìåííûõ èòîãîâ ÔÏ ïåðåïîëíåíà
#define FR_ERROR_CODE_15 0x15 //Ñìåíà óæå îòêðûòà
#define FR_ERROR_CODE_16 0x16 //Ñìåíà íå îòêðûòà //
#define FR_ERROR_CODE_17 0x17 //Íîìåð ïåðâîé ñìåíû áîëüøå íîìåðà ïîñëåäíåé ñìåíû //
#define FR_ERROR_CODE_18 0x18 //Äàòà ïåðâîé ñìåíû áîëüøå äàòû ïîñëåäíåé ñìåíû //
#define FR_ERROR_CODE_19 0x19 //Íåò äàííûõ â ÔÏ //
#define FR_ERROR_CODE_1a 0x1A //Îáëàñòü ïåðåðåãèñòðàöèé â ÔÏ ïåðåïîëíåíà //
#define FR_ERROR_CODE_1b 0x1B //Çàâîäñêîé íîìåð íå ââåäåí //
#define FR_ERROR_CODE_1c 0x1C //Â çàäàííîì äèàïàçîíå åñòü ïîâðåæäåííàÿ çàïèñü //
#define FR_ERROR_CODE_1d 0x1D //Ïîâðåæäåíà ïîñëåäíÿÿ çàïèñü ñìåííûõ èòîãîâ //
#define FR_ERROR_CODE_1f 0x1F //Îòñóòñòâóåò ïàìÿòü ðåãèñòðîâ //
#define FR_ERROR_CODE_20 0x20 //Ïåðåïîëíåíèå äåíåæíîãî ðåãèñòðà ïðè äîáàâëåíèè //
#define FR_ERROR_CODE_21 0x21 //Âû÷èòàåìàÿ ñóììà áîëüøå ñîäåðæèìîãî äåíåæíîãî ðåãèñòðà //
#define FR_ERROR_CODE_22 0x22 //Íåâåðíàÿ äàòà //
#define FR_ERROR_CODE_23 0x23 //Íåò çàïèñè àêòèâèçàöèè //
#define FR_ERROR_CODE_24 0x24 //Îáëàñòü àêòèâèçàöèé ïåðåïîëíåíà //
#define FR_ERROR_CODE_25 0x25 //Íåò àêòèâèçàöèè ñ çàïðàøèâàåìûì íîìåðîì //
#define FR_ERROR_CODE_28 0x28 //Â ÔÐ áîëåå 2õ ñáîéíûõ çàïèñåé //
#define FR_ERROR_CODE_33 0x33 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå //
#define FR_ERROR_CODE_35 0x35 //Íåêîððåêòíûé ïàðàìåòð ïðè äàííûõ íàñòðîéêàõ //
#define FR_ERROR_CODE_36 0x36 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå äëÿ äàííîé ðåàëèçàöèè ÔÐ //
#define FR_ERROR_CODE_37 0x37 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîé ðåàëèçàöèè ÔÐ //
#define FR_ERROR_CODE_38 0x38 //Îøèáêà â ÏÇÓ //+
#define FR_ERROR_CODE_39 0x39 //Âíóòðåííÿÿ îøèáêà ÏÎ ÔÐ //
#define FR_ERROR_CODE_3a 0x3A //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî íàäáàâêàì â ñìåíå //
#define FR_ERROR_CODE_3c 0x3C //ÝÊËÇ: íåâåðíûé ðåãèñòðàöèîííûé íîìåð //
#define FR_ERROR_CODE_3e 0x3E //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî ñåêöèÿì â ñìåíå //
#define FR_ERROR_CODE_3f 0x3F //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî ñêèäêàì â ñìåíå //
#define FR_ERROR_CODE_40 0x40 //Ïåðåïîëíåíèå äèàïàçîíà ñêèäîê //
#define FR_ERROR_CODE_41 0x41 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû íàëè÷íûìè //
#define FR_ERROR_CODE_42 0x42 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû òèïîì 2 //
#define FR_ERROR_CODE_43 0x43 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû òèïîì 3 //
#define FR_ERROR_CODE_44 0x44 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû òèïîì 4
#define FR_ERROR_CODE_45 0x45 //Cóììà âñåõ òèïîâ îïëàòû ìåíüøå èòîãà ÷åêà //
#define FR_ERROR_CODE_46 0x46 //Íå õâàòàåò íàëè÷íîñòè â êàññå //
#define FR_ERROR_CODE_47 0x47 //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî íàëîãàì â ñìåíå //
#define FR_ERROR_CODE_48 0x48 //Ïåðåïîëíåíèå èòîãà ÷åêà //
#define FR_ERROR_CODE_4a 0x4A //Îòêðûò ÷åê - îïåðàöèÿ íåâîçìîæíà //
#define FR_ERROR_CODE_4b 0x4B //Áóôåð ÷åêà ïåðåïîëíåí //
#define FR_ERROR_CODE_4c 0x4C //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî îáîðîòó íàëîãîâ â ñìåíå //
#define FR_ERROR_CODE_4d 0x4D //Âíîñèìàÿ áåçíàëè÷íîé îïëàòîé ñóììà áîëüøå ñóììû ÷åêà //
#define FR_ERROR_CODE_4e 0x4E //Ñìåíà ïðåâûñèëà 24 ÷àñà //
#define FR_ERROR_CODE_4f 0x4F //Íåâåðíûé ïàðîëü //
#define FR_ERROR_CODE_50 0x50 //Èäåò ïå÷àòü ïðåäûäóùåé êîìàíäû //
#define FR_ERROR_CODE_51 0x51 //Ïåðåïîëíåíèå íàêîïëåíèé íàëè÷íûìè â ñìåíå //
#define FR_ERROR_CODE_52 0x52 //Ïåðåïîëíåíèå íàêîïëåíèé ïî òèïó îïëàòû 2 â ñìåíå //
#define FR_ERROR_CODE_53 0x53 //Ïåðåïîëíåíèå íàêîïëåíèé ïî òèïó îïëàòû 3 â ñìåíå //
#define FR_ERROR_CODE_54 0x54 //Ïåðåïîëíåíèå íàêîïëåíèé ïî òèïó îïëàòû 4 â ñìåíå //
#define FR_ERROR_CODE_56 0x56 //Íåò äîêóìåíòà äëÿ ïîâòîðà //
#define FR_ERROR_CODE_57 0x57 //ÝÊËÇ: êîëè÷åñòâî çàêðûòûõ ñìåí íå ñîâïàäàåò ñ ÔÏ //
#define FR_ERROR_CODE_58 0x58 //Îæèäàíèå êîìàíäû ïðîäîëæåíèÿ ïå÷àòè //
#define FR_ERROR_CODE_59 0x59 //Äîêóìåíò îòêðûò äðóãèì îïåðàòîðîì //
#define FR_ERROR_CODE_5b 0x5B //Ïåðåïîëíåíèå äèàïàçîíà íàäáàâîê //
#define FR_ERROR_CODE_5c 0x5C //Ïîíèæåíî íàïðÿæåíèå 24Â
#define FR_ERROR_CODE_5d 0x5D //Òàáëèöà íå îïðåäåëåíà //
#define FR_ERROR_CODE_5e 0x5E //Íåêîððåêòíàÿ îïåðàöèÿ //
#define FR_ERROR_CODE_5f 0x5F //Îòðèöàòåëüíûé èòîã ÷åêà //
#define FR_ERROR_CODE_60 0x60 //Ïåðåïîëíåíèå ïðè óìíîæåíèè //
#define FR_ERROR_CODE_61 0x61 //Ïåðåïîëíåíèå äèàïàçîíà öåíû //
#define FR_ERROR_CODE_62 0x62 //Ïåðåïîëíåíèå äèàïàçîíà êîëè÷åñòâà //
#define FR_ERROR_CODE_63 0x63 //Ïåðåïîëíåíèå äèàïàçîíà îòäåëà //
#define FR_ERROR_CODE_64 0x64 //ÔÏ îòñóòñòâóåò //+
#define FR_ERROR_CODE_65 0x65 //Íå õâàòàåò äåíåã â ñåêöèè //
#define FR_ERROR_CODE_66 0x66 //Ïåðåïîëíåíèå äåíåã â ñåêöèè //
#define FR_ERROR_CODE_67 0x67 //Îøèáêà ñâÿçè ñ ÔÏ //+
#define FR_ERROR_CODE_68 0x68 //Íå õâàòàåò äåíåã ïî îáîðîòó íàëîãîâ //
#define FR_ERROR_CODE_69 0x69 //Ïåðåïîëíåíèå äåíåã ïî îáîðîòó íàëîãîâ //
#define FR_ERROR_CODE_6a 0x6A //Îøèáêà ïèòàíèÿ â ìîìåíò îòâåòà ïî I
#define FR_ERROR_CODE_6b 0x6B //Íåò ÷åêîâîé ëåíòû //
#define FR_ERROR_CODE_6c 0x6C //Íåò êîíòðîëüíîé ëåíòû //
#define FR_ERROR_CODE_6d 0x6D //Íå õâàòàåò äåíåã ïî íàëîãó //
#define FR_ERROR_CODE_6e 0x6E //Ïåðåïîëíåíèå äåíåã ïî íàëîãó //
#define FR_ERROR_CODE_6f 0x6F //Ïåðåïîëíåíèå ïî âûïëàòå â ñìåíå //
#define FR_ERROR_CODE_70 0x70 //Ïåðåïîëíåíèå ÔÏ //
#define FR_ERROR_CODE_71 0x71 //Îøèáêà îòðåç÷èêà //+
#define FR_ERROR_CODE_72 0x72 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîì ïîäðåæèìå //
#define FR_ERROR_CODE_73 0x73 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîì ðåæèìå //
#define FR_ERROR_CODE_74 0x74 //Îøèáêà ÎÇÓ //
#define FR_ERROR_CODE_75 0x75 //Îøèáêà ïèòàíèÿ //+
#define FR_ERROR_CODE_76 0x76 //Îøèáêà ïðèíòåðà: íåò èìïóëüñîâ ñ òàõîãåíåðàòîðà //+
#define FR_ERROR_CODE_77 0x77 //Îøèáêà ïðèíòåðà: íåò ñèãíàëà ñ äàò÷èêîâ //+
#define FR_ERROR_CODE_78 0x78 //Çàìåíà ÏÎ //
#define FR_ERROR_CODE_79 0x79 //Çàìåíà ÔÏ //
#define FR_ERROR_CODE_7a 0x7A //Ïîëå íå ðåäàêòèðóåòñÿ
#define FR_ERROR_CODE_7b 0x7B //Îøèáêà îáîðóäîâàíèÿ //
#define FR_ERROR_CODE_7c 0x7C //Íå ñîâïàäàåò äàòà //
#define FR_ERROR_CODE_7d 0x7D //Íåâåðíûé ôîðìàò äàòû //
#define FR_ERROR_CODE_7e 0x7E //Íåâåðíîå çíà÷åíèå â ïîëå äëèíû //
#define FR_ERROR_CODE_7f 0x7F //Ïåðåïîëíåíèå äèàïàçîíà èòîãà ÷åêà //
#define FR_ERROR_CODE_80 0x80 //Îøèáêà ñâÿçè ñ ÔÏ //+
#define FR_ERROR_CODE_81 0x81 //Îøèáêà ñâÿçè ñ ÔÏ //+
#define FR_ERROR_CODE_82 0x82 //Îøèáêà ñâÿçè ñ ÔÏ //+
#define FR_ERROR_CODE_83 0x83 //Îøèáêà ñâÿçè ñ ÔÏ //+
#define FR_ERROR_CODE_84 0x84 //Ïåðåïîëíåíèå íàëè÷íîñòè //
#define FR_ERROR_CODE_85 0x85 //Ïåðåïîëíåíèå ïî ïðîäàæàì â ñìåíå //
#define FR_ERROR_CODE_86 0x86 //Ïåðåïîëíåíèå ïî ïîêóïêàì â ñìåíå //
#define FR_ERROR_CODE_87 0x87 //Ïåðåïîëíåíèå ïî âîçâðàòàì ïðîäàæ â ñìåíå //
#define FR_ERROR_CODE_88 0x88 //Ïåðåïîëíåíèå ïî âîçâðàòàì ïîêóïîê â ñìåíå //
#define FR_ERROR_CODE_89 0x89 //Ïåðåïîëíåíèå ïî âíåñåíèþ â ñìåíå //
#define FR_ERROR_CODE_8a 0x8A //Ïåðåïîëíåíèå ïî íàäáàâêàì â ÷åêå //
#define FR_ERROR_CODE_8b 0x8B //Ïåðåïîëíåíèå ïî ñêèäêàì â ÷åêå //
#define FR_ERROR_CODE_8c 0x8C //Îòðèöàòåëüíûé èòîã íàäáàâêè â ÷åêå //
#define FR_ERROR_CODE_8d 0x8D //Îòðèöàòåëüíûé èòîã ñêèäêè â ÷åêå //
#define FR_ERROR_CODE_8e 0x8E //Íóëåâîé èòîã ÷åêà //
#define FR_ERROR_CODE_8f 0x8F //Êàññà íå ôèñêàëèçèðîâàíà // //
#define FR_ERROR_CODE_1 0x1 //Íåèçâåñòíàÿ êîìàíäà
#define FR_ERROR_CODE_2 0x2 //Íåâåðíîå ñîñòîÿíèå ÔÍ
#define FR_ERROR_CODE_3 0x3 //Îøèáêà ÔÍ
#define FR_ERROR_CODE_4 0x4 //Îøèáêà ÊÑ
#define FR_ERROR_CODE_5 0x5 //Çàêîí÷åí ñðîê ýêñïëóàòàöèè ÔÍ
#define FR_ERROR_CODE_6 0x6 //Àðõèâ ÔÍ ïåðåïîëíåí
#define FR_ERROR_CODE_7 0x7 //Íåâåðíûå äàòà è/èëè âðåìÿ
#define FR_ERROR_CODE_8 0x8 //Íåò çàïðîøåííûõ äàííûõ
#define FR_ERROR_CODE_9 0x9 //Íåêîððåêòíîå çíà÷åíèå ïàðàìåòðîâ êîìàíäû
#define FR_ERROR_CODE_10 0x10 //Ïðåâûøåíèå ðàçìåðîâ TLV äàííûõ
#define FR_ERROR_CODE_11 0x11 //Íåò òðàíñïîðòíîãî ñîåäèíåíèÿ
#define FR_ERROR_CODE_12 0x12 //Èñ÷åðïàí ðåñóðñ ÊÑ
#define FR_ERROR_CODE_14 0x14 //Èñ÷åðïàí ðåñóðñ õðàíåíèÿ
#define FR_ERROR_CODE_15 0x15 //Èñ÷åðïàí ðåñóðñ Îæèäàíèÿ ïåðåäà÷è ñîîáùåíèÿ
#define FR_ERROR_CODE_16 0x16 //Ïðîäîëæèòåëüíîñòü ñìåíû áîëåå 24 ÷àñîâ
#define FR_ERROR_CODE_17 0x17 //Íåâåðíàÿ ðàçíèöà âî âðåìåíè ìåæäó 2 îïåðàöèìè
#define FR_ERROR_CODE_20 0x20 //Ñîîáùåíèå îò ÎÔÄ íå ìîæåò áûòü ïðèíÿòî
#define FR_ERROR_CODE_2F 0x2F //Òàéìàóò îáìåíà ñ ÔÍ
#define FR_ERROR_CODE_30 0x30 //ÔÍ íå îòâå÷àåò
#define FR_ERROR_CODE_33 0x33 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå
#define FR_ERROR_CODE_34 0x34 //Íåò äàííûõ
#define FR_ERROR_CODE_35 0x35 //Íåêîððåêòíûé ïàðàìåòð ïðè äàííûõ íàñòðîéêàõ
#define FR_ERROR_CODE_36 0x36 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå äëÿ äàííîé ðåàëèçàöèè ÊÊÒ
#define FR_ERROR_CODE_37 0x37 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîé ðåàëèçàöèè ÊÊÒ
#define FR_ERROR_CODE_38 0x38 //Îøèáêà â ÏÇÓ
#define FR_ERROR_CODE_39 0x39 //Âíóòðåííÿÿ îøèáêà ÏÎ ÊÊÒ
#define FR_ERROR_CODE_3a 0x3A //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî íàäáàâêàì â ñìåíå
#define FR_ERROR_CODE_3c 0x3C //Ñìåíà îòêðûòà îïåðàöèÿ íå âîçìîæíà
#define FR_ERROR_CODE_3D 0x3D //Ñìåíà íå îòêðûòà îïåðàöèÿ íå âîçìîæíà
#define FR_ERROR_CODE_3E 0x3E //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî ñåêöèÿì â ñìåíå
#define FR_ERROR_CODE_3F 0x3F //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî ñêèäêàì â ñìåíå
#define FR_ERROR_CODE_40 0x40 //Ïåðåïîëíåíèå äèàïàçîíà ñêèäîê
#define FR_ERROR_CODE_41 0x41 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû íàëè÷íûìè
#define FR_ERROR_CODE_42 0x42 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû òèïîì 2
#define FR_ERROR_CODE_43 0x43 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû òèïîì 3
#define FR_ERROR_CODE_44 0x44 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû òèïîì 4
#define FR_ERROR_CODE_45 0x45 //Cóììà âñåõ òèïîâ îïëàòû ìåíüøå èòîãà ÷åêà
#define FR_ERROR_CODE_46 0x46 //Íå õâàòàåò íàëè÷íîñòè â êàññå
#define FR_ERROR_CODE_47 0x47 //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî íàëîãàì â ñìåíå
#define FR_ERROR_CODE_48 0x48 //Ïåðåïîëíåíèå èòîãà ÷åêà
#define FR_ERROR_CODE_49 0x49 //Îïåðàöèÿ íåâîçìîæíà â îòêðûòîì ÷åêå äàííîãî òèïà
#define FR_ERROR_CODE_4A 0x4A //Îòêðûò ÷åê - îïåðàöèÿ íåâîçìîæíà
#define FR_ERROR_CODE_4B 0x4B //Áóôåð ÷åêà ïåðåïîëíåí
#define FR_ERROR_CODE_4C 0x4C //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî îáîðîòó íàëîãîâ â ñìåíå
#define FR_ERROR_CODE_4D 0x4D //Âíîñèìàÿ áåçíàëè÷íîé îïëàòîé ñóììà áîëüøå ñóììû ÷åêà
#define FR_ERROR_CODE_4E 0x4E //Ñìåíà ïðåâûñèëà 24 ÷àñà
#define FR_ERROR_CODE_4F 0x4F //Íåâåðíûé ïàðîëü
#define FR_ERROR_CODE_50 0x50 //Èäåò ïå÷àòü ïðåäûäóùåé êîìàíäû
#define FR_ERROR_CODE_51 0x51 //Ïåðåïîëíåíèå íàêîïëåíèé íàëè÷íûìè â ñìåíå
#define FR_ERROR_CODE_52 0x52 //Ïåðåïîëíåíèå íàêîïëåíèé ïî òèïó îïëàòû 2 â ñìåíå
#define FR_ERROR_CODE_53 0x53 //Ïåðåïîëíåíèå íàêîïëåíèé ïî òèïó îïëàòû 3 â ñìåíå
#define FR_ERROR_CODE_54 0x54 //Ïåðåïîëíåíèå íàêîïëåíèé ïî òèïó îïëàòû 4 â ñìåíå
#define FR_ERROR_CODE_55 0x55 //×åê çàêðûò îïåðàöèÿ íåâîçìîæíà
#define FR_ERROR_CODE_56 0x56 //Íåò äîêóìåíòà äëÿ ïîâòîðà
#define FR_ERROR_CODE_58 0x58 //Îæèäàíèå êîìàíäû ïðîäîëæåíèÿ ïå÷àòè
#define FR_ERROR_CODE_59 0x59 //Äîêóìåíò îòêðûò äðóãèì îïåðàòîðîì
#define FR_ERROR_CODE_5B 0x5B //Ïåðåïîëíåíèå äèàïàçîíà íàäáàâîê
#define FR_ERROR_CODE_5C 0x5C //Ïîíèæåíî íàïðÿæåíèå 24Â
#define FR_ERROR_CODE_5D 0x5D //Òàáëèöà íå îïðåäåëåíà
#define FR_ERROR_CODE_5E 0x5E //Íåêîððåêòíàÿ îïåðàöèÿ
#define FR_ERROR_CODE_5F 0x5F //Îòðèöàòåëüíûé èòîã ÷åêà
#define FR_ERROR_CODE_60 0x60 //Ïåðåïîëíåíèå ïðè óìíîæåíèè
#define FR_ERROR_CODE_61 0x61 //Ïåðåïîëíåíèå äèàïàçîíà öåíû
#define FR_ERROR_CODE_62 0x62 //Ïåðåïîëíåíèå äèàïàçîíà êîëè÷åñòâà
#define FR_ERROR_CODE_63 0x63 //Ïåðåïîëíåíèå äèàïàçîíà îòäåëà
#define FR_ERROR_CODE_65 0x65 //Íå õâàòàåò äåíåã â ñåêöèè
#define FR_ERROR_CODE_66 0x66 //Ïåðåïîëíåíèå äåíåã â ñåêöèè
#define FR_ERROR_CODE_68 0x68 //Íå õâàòàåò äåíåã ïî îáîðîòó íàëîãîâ
#define FR_ERROR_CODE_69 0x69 //Ïåðåïîëíåíèå äåíåã ïî îáîðîòó íàëîãîâ
#define FR_ERROR_CODE_6A 0x6A //Îøèáêà ïèòàíèÿ â ìîìåíò îòâåòà ïî I2C
#define FR_ERROR_CODE_6B 0x6B //Íåò ÷åêîâîé ëåíòû
#define FR_ERROR_CODE_6C 0x6C //Íåò êîíòðîëüíîé ëåíòû
#define FR_ERROR_CODE_6D 0x6D //Íå õâàòàåò äåíåã ïî íàëîãó
#define FR_ERROR_CODE_6E 0x6E //Ïåðåïîëíåíèå äåíåã ïî íàëîãó
#define FR_ERROR_CODE_6F 0x6F //Ïåðåïîëíåíèå ïî âûïëàòå â ñìåíå
#define FR_ERROR_CODE_71 0x71 //Îøèáêà îòðåç÷èêà
#define FR_ERROR_CODE_72 0x72 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîì ïîäðåæèìå
#define FR_ERROR_CODE_73 0x73 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîì ðåæèìå
#define FR_ERROR_CODE_74 0x74 //Îøèáêà ÎÇÓ
#define FR_ERROR_CODE_75 0x75 //Îøèáêà ïèòàíèÿ
#define FR_ERROR_CODE_77 0x77 //Îøèáêà ïðèíòåðà: íåò ñèãíàëà ñ äàò÷èêîâ
#define FR_ERROR_CODE_78 0x78 //Çàìåíà ÏÎ
#define FR_ERROR_CODE_7A 0x7A //Ïîëå íå ðåäàêòèðóåòñÿ
#define FR_ERROR_CODE_7B 0x7B //Îøèáêà îáîðóäîâàíèÿ
#define FR_ERROR_CODE_7C 0x7C //Íå ñîâïàäàåò äàòà
#define FR_ERROR_CODE_7D 0x7D //Íåâåðíûé ôîðìàò äàòû
#define FR_ERROR_CODE_7E 0x7E //Íåâåðíîå çíà÷åíèå â ïîëå äëèíû
#define FR_ERROR_CODE_7F 0x7F //Ïåðåïîëíåíèå äèàïàçîíà èòîãà ÷åêà
#define FR_ERROR_CODE_84 0x84 //Ïåðåïîëíåíèå íàëè÷íîñòè
#define FR_ERROR_CODE_85 0x85 //Ïåðåïîëíåíèå ïî ïðîäàæàì â ñìåíå
#define FR_ERROR_CODE_86 0x86 //Ïåðåïîëíåíèå ïî ïîêóïêàì â ñìåíå
#define FR_ERROR_CODE_87 0x87 //Ïåðåïîëíåíèå ïî âîçâðàòàì ïðîäàæ â ñìåíå
#define FR_ERROR_CODE_88 0x88 //Ïåðåïîëíåíèå ïî âîçâðàòàì ïîêóïîê â ñìåíå
#define FR_ERROR_CODE_89 0x89 //Ïåðåïîëíåíèå ïî âíåñåíèþ â ñìåíå
#define FR_ERROR_CODE_8A 0x8A //Ïåðåïîëíåíèå ïî íàäáàâêàì â ÷åêå
#define FR_ERROR_CODE_8B 0x8B //Ïåðåïîëíåíèå ïî ñêèäêàì â ÷åêå
#define FR_ERROR_CODE_8C 0x8C //Îòðèöàòåëüíûé èòîã íàäáàâêè â ÷åêå
#define FR_ERROR_CODE_8D 0x8D //Îòðèöàòåëüíûé èòîã ñêèäêè â ÷åêå
#define FR_ERROR_CODE_8E 0x8E //Íóëåâîé èòîã ÷åêà
#define FR_ERROR_CODE_90 0x90 //Ïîëå ïðåâûøàåò ðàçìåð, óñòàíîâëåííûé â íàñòðîéêàõ
#define FR_ERROR_CODE_91 0x91 //Âûõîä çà ãðàíèöó ïîëÿ ïå÷àòè ïðè äàííûõ íàñòðîéêàõ øðèôòà
#define FR_ERROR_CODE_92 0x92 //Íàëîæåíèå ïîëåé
#define FR_ERROR_CODE_93 0x93 //Âîññòàíîâëåíèå ÎÇÓ ïðîøëî óñïåøíî
#define FR_ERROR_CODE_94 0x94 //Èñ÷åðïàí ëèìèò îïåðàöèé â ÷åêå
#define FR_ERROR_CODE_a0 0xA0 //Îøèáêà ñâÿçè ñ ÝÊËÇ
#define FR_ERROR_CODE_a1 0xA1 //ÝÊËÇ îòñóòñòâóåò
#define FR_ERROR_CODE_a2 0xA2 //ÝÊËÇ: Íåêîððåêòíûé ôîðìàò èëè ïàðàìåòð êîìàíäû
#define FR_ERROR_CODE_a3 0xA3 //Íåêîððåêòíîå ñîñòîÿíèå ÝÊËÇ
#define FR_ERROR_CODE_a4 0xA4 //Àâàðèÿ ÝÊËÇ
#define FR_ERROR_CODE_a5 0xA5 //Àâàðèÿ ÊÑ â ñîñòàâå ÝÊËÇ
#define FR_ERROR_CODE_a6 0xA6 //Èñ÷åðïàí âðåìåííîé ðåñóðñ ÝÊËÇ
#define FR_ERROR_CODE_a7 0xA7 //ÝÊËÇ ïåðåïîëíåíà
#define FR_ERROR_CODE_a8 0xA8 //ÇÊËÇ: Íåâåðíûå äàòà è âðåìÿ
#define FR_ERROR_CODE_a9 0xA9 //ÝÊËÇ: Íåò çàïðîøåííûõ äàííûõ
#define FR_ERROR_CODE_aa 0xAA //Ïåðåïîëíåíèå ÝÊËÇ (îòðèöàòåëüíûé èòîã äîêóìåíòà)
#define FR_ERROR_CODE_b0 0xB0 //ÝÊËÇ: Ïåðåïîëíåíèå â ïàðàìåòðå êîëè÷åñòâî
#define FR_ERROR_CODE_b1 0xB1 //ÝÊËÇ: Ïåðåïîëíåíèå â ïàðàìåòðå ñóììà
#define FR_ERROR_CODE_b2 0xB2 //ÝÊËÇ: Óæå àêòèâèçèðîâàíà
#define FR_ERROR_CODE_c0 0xC0 //Êîíòðîëü äàòû è âðåìåíè (ïîäòâåðäèòå äàòó è âðåìÿ)
#define FR_ERROR_CODE_c1 0xC1 //ÝÊËÇ: ñóòî÷íûé îò÷?ò ñ ãàøåíèåì ïðåðâàòü íåëüçÿ
#define FR_ERROR_CODE_c2 0xC2 //Ïðåâûøåíèå íàïðÿæåíèÿ â áëîêå ïèòàíèÿ
#define FR_ERROR_CODE_c3 0xC3 //Íåñîâïàäåíèå èòîãîâ ÷åêà è ÝÊËÇ
#define FR_ERROR_CODE_c4 0xC4 //Íåñîâïàäåíèå íîìåðîâ ñìåí
//#define FR_ERROR_CODE_c5 0xC5 //Áóôåð ïîäêëàäíîãî äîêóìåíòà ïóñò
//#define FR_ERROR_CODE_c6 0xC6 //Ïîäêëàäíîé äîêóìåíò îòñóòñòâóåò //
//#define FR_ERROR_CODE_c7 0xC7 //Ïîëå íå ðåäàêòèðóåòñÿ â äàííîì ðåæèìå
//#define FR_ERROR_CODE_c8 0xC8 //Îòñóòñòâóþò //èìïóëüñû îò òàõîäàò÷èêà
#define FR_ERROR_CODE_C0 0xC0 //Êîíòðîëü äàòû è âðåìåíè (ïîäòâåðäèòå äàòó è âðåìÿ)
#define FR_ERROR_CODE_C2 0xC2 //Ïðåâûøåíèå íàïðÿæåíèÿ â áëîêå ïèòàíèÿ
#define FR_ERROR_CODE_C4 0xC4 //Íåñîâïàäåíèå íîìåðîâ ñìåí
#define FR_ERROR_CODE_C7 0xC7 //Ïîëå íå ðåäàêòèðóåòñÿ â äàííîì ðåæèìå
#define FR_ERROR_CODE_C8 0xC8 //Îòñóòñòâóþò èìïóëüñû îò òàõîäàò÷èêà
#define FR_ERROR_NUMBER 143
#define FR_ERROR_NUMBER 109
// ñòðóêòóðà çàâîäñêîãî íîìåðà è ÐÍÌ
#pragma pack(1)
#pragma pack(push, 1)
typedef struct{
CPU_INT08U FactoryNumber[7];
CPU_INT08U RNM[7];
}TFiscFactoryNumber;
#pragma pack(pop)
// ñòðóêòóðà êîðîòêîãî ñîñòîÿíèÿ
#pragma pack(1)
#pragma pack(push, 1)
typedef struct{
CPU_INT08U OperatorNumber; // íîìåð îïåðàòîðà 1..30
CPU_INT16U Flags; // ôëàãè ÔÐ
@ -279,9 +250,10 @@ typedef struct{
CPU_INT08U BillOperationNumber_H; // êîë-âî îïðåàöèé â ÷åêå, ñò. áàéò
CPU_INT08U Reserve[3]; // ðåçåðâ
}TFiscShortStatus;
#pragma pack(pop)
// ñòðóêòóðà ïîëíîãî ñîñòîÿíèÿ
#pragma pack(1)
#pragma pack(push, 1)
typedef struct{
/*
Ïîðÿäêîâûé íîìåð îïåðàòîðà (1 áàéò) 130
@ -338,9 +310,10 @@ typedef struct{
CPU_INT08U inn[6];
}TFiscFullStatus;
#pragma pack(pop)
// ñòðóêòóðà èíôîðìàöèè îá óñòðîéñòâå
#pragma pack(1)
#pragma pack(push, 1)
typedef struct{
CPU_INT08U Type; // Òèï óñòðîéñòâà (1 áàéò) 0…255
CPU_INT08U Subtype; // Ïîäòèï óñòðîéñòâà (1 áàéò) 0…255
@ -354,6 +327,7 @@ typedef struct{
// áàéò, îòâîäèìîå ïîä íàçâàíèå óñòðîéñòâà, îïðåäåëÿåòñÿ â êàæäîì êîíêðåòíîì
// ñëó÷àå ñàìîñòîÿòåëüíî ðàçðàáîò÷èêàìè óñòðîéñòâà (X áàéò)
}TFiscDevType;
#pragma pack(pop)
extern TFiscDevType FiscDevInfo;
// ôóíêöèè
@ -386,10 +360,18 @@ extern int FiscPrintContinue(CPU_INT32U pass, CPU_INT08U* err);
extern int FiscOpenBill(CPU_INT32U pass, CPU_INT08U type, CPU_INT08U* err);
extern int FiscMakeSell(CPU_INT32U pass, CPU_INT64U *count, CPU_INT64U *price, CPU_INT08U department, CPU_INT08U* tax, char* text, CPU_INT08U* err);
extern int FiscCloseBill(CPU_INT32U pass, CPU_INT64U *cash, CPU_INT08U* tax, char* text, CPU_INT08U* err);
extern int FiscCanselBill(CPU_INT32U pass, CPU_INT08U* err);
extern int FiscPrintDayReportToBuf(CPU_INT32U admpass, CPU_INT08U* err);
extern int FiscPrintDayReportsFromBuf(CPU_INT32U admpass, CPU_INT08U* err);
extern int FiscPollExt(void);
extern int FiscOpenDay(CPU_INT32U pass, CPU_INT08U* err);
extern int FiscMakeSellV2(CPU_INT32U pass, CPU_INT64U *count, CPU_INT64U *price, CPU_INT08U department, CPU_INT08U* tax, CPU_INT08U subj, char* text, CPU_INT08U* err);
extern int FiscCloseBillV2(CPU_INT32U pass, CPU_INT64U *cash, CPU_INT08U taxsys, char* text, CPU_INT08U* err);
extern int FiscWriteTableData(CPU_INT32U pass, CPU_INT08U table, CPU_INT16U row, CPU_INT08U field, CPU_INT08U field_len, CPU_INT08U* data, CPU_INT08U* err);
extern int FiscReadTableData(CPU_INT32U pass, CPU_INT08U table, CPU_INT16U row, CPU_INT08U field, CPU_INT08U field_len, CPU_INT08U* data, CPU_INT08U* err);
#endif //#ifndef _FISCAL_H_

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,63 +0,0 @@
This is an internal working file generated by the Source Browser.
21:12 33s
C:\work\solarium\DRIVERS\ccnet\CCRSProtocol.c
C:\work\solarium\DRIVERS\ccnet\CCRSProtocol.c
--diag_suppress
Pa039
-o
C:\work\solarium\Flash\Obj\
--no_cse
--no_unroll
--no_inline
--no_code_motion
--no_tbaa
--no_clustering
--no_scheduling
--debug
--endian=little
--cpu=ARM7TDMI-S
-e
--fpu=None
--dlib_config
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\INC\c\DLib_Config_Normal.h
-I
C:\work\solarium\OS\app\
-I
C:\work\solarium\OS\bsp\
-I
C:\work\solarium\OS\uc\cpu\
-I
C:\work\solarium\OS\uc\lib\
-I
C:\work\solarium\OS\uc\os_ii\port\
-I
C:\work\solarium\OS\uc\os_ii\source\
-I
C:\work\solarium\DRIVERS\lcd\
-I
C:\work\solarium\DRIVERS\keyboard\
-I
C:\work\solarium\DRIVERS\fram\
-I
C:\work\solarium\DRIVERS\ccnet\
-I
C:\work\solarium\DRIVERS\fiscal\
-I
C:\work\solarium\DRIVERS\modem\
-I
C:\work\solarium\PROJECT\
-I
C:\work\solarium\PROJECT\app\
-I
C:\work\solarium\PROJECT\service\
-I
C:\work\solarium\PROJECT\menu\
-I
C:\work\solarium\PROJECT\data\
-I
C:\work\solarium\PROJECT\tools\
--interwork
--cpu_mode
thumb
-On
--use_c++_inline

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,63 +0,0 @@
This is an internal working file generated by the Source Browser.
21:12 34s
C:\work\solarium\DRIVERS\fiscal\fiscal.c
C:\work\solarium\DRIVERS\fiscal\fiscal.c
--diag_suppress
Pa039
-o
C:\work\solarium\Flash\Obj\
--no_cse
--no_unroll
--no_inline
--no_code_motion
--no_tbaa
--no_clustering
--no_scheduling
--debug
--endian=little
--cpu=ARM7TDMI-S
-e
--fpu=None
--dlib_config
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\INC\c\DLib_Config_Normal.h
-I
C:\work\solarium\OS\app\
-I
C:\work\solarium\OS\bsp\
-I
C:\work\solarium\OS\uc\cpu\
-I
C:\work\solarium\OS\uc\lib\
-I
C:\work\solarium\OS\uc\os_ii\port\
-I
C:\work\solarium\OS\uc\os_ii\source\
-I
C:\work\solarium\DRIVERS\lcd\
-I
C:\work\solarium\DRIVERS\keyboard\
-I
C:\work\solarium\DRIVERS\fram\
-I
C:\work\solarium\DRIVERS\ccnet\
-I
C:\work\solarium\DRIVERS\fiscal\
-I
C:\work\solarium\DRIVERS\modem\
-I
C:\work\solarium\PROJECT\
-I
C:\work\solarium\PROJECT\app\
-I
C:\work\solarium\PROJECT\service\
-I
C:\work\solarium\PROJECT\menu\
-I
C:\work\solarium\PROJECT\data\
-I
C:\work\solarium\PROJECT\tools\
--interwork
--cpu_mode
thumb
-On
--use_c++_inline

Binary file not shown.

View File

@ -1,63 +0,0 @@
This is an internal working file generated by the Source Browser.
21:12 35s
C:\work\solarium\DRIVERS\fram\fram.c
C:\work\solarium\DRIVERS\fram\fram.c
--diag_suppress
Pa039
-o
C:\work\solarium\Flash\Obj\
--no_cse
--no_unroll
--no_inline
--no_code_motion
--no_tbaa
--no_clustering
--no_scheduling
--debug
--endian=little
--cpu=ARM7TDMI-S
-e
--fpu=None
--dlib_config
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\INC\c\DLib_Config_Normal.h
-I
C:\work\solarium\OS\app\
-I
C:\work\solarium\OS\bsp\
-I
C:\work\solarium\OS\uc\cpu\
-I
C:\work\solarium\OS\uc\lib\
-I
C:\work\solarium\OS\uc\os_ii\port\
-I
C:\work\solarium\OS\uc\os_ii\source\
-I
C:\work\solarium\DRIVERS\lcd\
-I
C:\work\solarium\DRIVERS\keyboard\
-I
C:\work\solarium\DRIVERS\fram\
-I
C:\work\solarium\DRIVERS\ccnet\
-I
C:\work\solarium\DRIVERS\fiscal\
-I
C:\work\solarium\DRIVERS\modem\
-I
C:\work\solarium\PROJECT\
-I
C:\work\solarium\PROJECT\app\
-I
C:\work\solarium\PROJECT\service\
-I
C:\work\solarium\PROJECT\menu\
-I
C:\work\solarium\PROJECT\data\
-I
C:\work\solarium\PROJECT\tools\
--interwork
--cpu_mode
thumb
-On
--use_c++_inline

Binary file not shown.

View File

@ -1,63 +0,0 @@
This is an internal working file generated by the Source Browser.
21:12 36s
C:\work\solarium\DRIVERS\keyboard\keyboard.c
C:\work\solarium\DRIVERS\keyboard\keyboard.c
--diag_suppress
Pa039
-o
C:\work\solarium\Flash\Obj\
--no_cse
--no_unroll
--no_inline
--no_code_motion
--no_tbaa
--no_clustering
--no_scheduling
--debug
--endian=little
--cpu=ARM7TDMI-S
-e
--fpu=None
--dlib_config
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\INC\c\DLib_Config_Normal.h
-I
C:\work\solarium\OS\app\
-I
C:\work\solarium\OS\bsp\
-I
C:\work\solarium\OS\uc\cpu\
-I
C:\work\solarium\OS\uc\lib\
-I
C:\work\solarium\OS\uc\os_ii\port\
-I
C:\work\solarium\OS\uc\os_ii\source\
-I
C:\work\solarium\DRIVERS\lcd\
-I
C:\work\solarium\DRIVERS\keyboard\
-I
C:\work\solarium\DRIVERS\fram\
-I
C:\work\solarium\DRIVERS\ccnet\
-I
C:\work\solarium\DRIVERS\fiscal\
-I
C:\work\solarium\DRIVERS\modem\
-I
C:\work\solarium\PROJECT\
-I
C:\work\solarium\PROJECT\app\
-I
C:\work\solarium\PROJECT\service\
-I
C:\work\solarium\PROJECT\menu\
-I
C:\work\solarium\PROJECT\data\
-I
C:\work\solarium\PROJECT\tools\
--interwork
--cpu_mode
thumb
-On
--use_c++_inline

View File

@ -1,63 +0,0 @@
This is an internal working file generated by the Source Browser.
21:12 37s
C:\work\solarium\DRIVERS\lcd\lcd.c
C:\work\solarium\DRIVERS\lcd\lcd.c
--diag_suppress
Pa039
-o
C:\work\solarium\Flash\Obj\
--no_cse
--no_unroll
--no_inline
--no_code_motion
--no_tbaa
--no_clustering
--no_scheduling
--debug
--endian=little
--cpu=ARM7TDMI-S
-e
--fpu=None
--dlib_config
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\INC\c\DLib_Config_Normal.h
-I
C:\work\solarium\OS\app\
-I
C:\work\solarium\OS\bsp\
-I
C:\work\solarium\OS\uc\cpu\
-I
C:\work\solarium\OS\uc\lib\
-I
C:\work\solarium\OS\uc\os_ii\port\
-I
C:\work\solarium\OS\uc\os_ii\source\
-I
C:\work\solarium\DRIVERS\lcd\
-I
C:\work\solarium\DRIVERS\keyboard\
-I
C:\work\solarium\DRIVERS\fram\
-I
C:\work\solarium\DRIVERS\ccnet\
-I
C:\work\solarium\DRIVERS\fiscal\
-I
C:\work\solarium\DRIVERS\modem\
-I
C:\work\solarium\PROJECT\
-I
C:\work\solarium\PROJECT\app\
-I
C:\work\solarium\PROJECT\service\
-I
C:\work\solarium\PROJECT\menu\
-I
C:\work\solarium\PROJECT\data\
-I
C:\work\solarium\PROJECT\tools\
--interwork
--cpu_mode
thumb
-On
--use_c++_inline

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,63 +0,0 @@
This is an internal working file generated by the Source Browser.
21:12 37s
C:\work\solarium\DRIVERS\modem\modem.c
C:\work\solarium\DRIVERS\modem\modem.c
--diag_suppress
Pa039
-o
C:\work\solarium\Flash\Obj\
--no_cse
--no_unroll
--no_inline
--no_code_motion
--no_tbaa
--no_clustering
--no_scheduling
--debug
--endian=little
--cpu=ARM7TDMI-S
-e
--fpu=None
--dlib_config
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\INC\c\DLib_Config_Normal.h
-I
C:\work\solarium\OS\app\
-I
C:\work\solarium\OS\bsp\
-I
C:\work\solarium\OS\uc\cpu\
-I
C:\work\solarium\OS\uc\lib\
-I
C:\work\solarium\OS\uc\os_ii\port\
-I
C:\work\solarium\OS\uc\os_ii\source\
-I
C:\work\solarium\DRIVERS\lcd\
-I
C:\work\solarium\DRIVERS\keyboard\
-I
C:\work\solarium\DRIVERS\fram\
-I
C:\work\solarium\DRIVERS\ccnet\
-I
C:\work\solarium\DRIVERS\fiscal\
-I
C:\work\solarium\DRIVERS\modem\
-I
C:\work\solarium\PROJECT\
-I
C:\work\solarium\PROJECT\app\
-I
C:\work\solarium\PROJECT\service\
-I
C:\work\solarium\PROJECT\menu\
-I
C:\work\solarium\PROJECT\data\
-I
C:\work\solarium\PROJECT\tools\
--interwork
--cpu_mode
thumb
-On
--use_c++_inline

Binary file not shown.

43
Flash/Obj/solarium.pbd Normal file
View File

@ -0,0 +1,43 @@
This is an internal working file generated by the Source Browser.
23:08 48s
C:\work\solarium\Flash\Obj\CCRSProtocol.pbi
C:\work\solarium\Flash\Obj\app.pbi
C:\work\solarium\Flash\Obj\app_serv.pbi
C:\work\solarium\Flash\Obj\bsp.pbi
C:\work\solarium\Flash\Obj\coin.pbi
C:\work\solarium\Flash\Obj\control.pbi
C:\work\solarium\Flash\Obj\crc16.pbi
C:\work\solarium\Flash\Obj\data.pbi
C:\work\solarium\Flash\Obj\datadesc.pbi
C:\work\solarium\Flash\Obj\fiscal.pbi
C:\work\solarium\Flash\Obj\fr.pbi
C:\work\solarium\Flash\Obj\fram.pbi
C:\work\solarium\Flash\Obj\journal.pbi
C:\work\solarium\Flash\Obj\keyboard.pbi
C:\work\solarium\Flash\Obj\lcd.pbi
C:\work\solarium\Flash\Obj\lib_mem.pbi
C:\work\solarium\Flash\Obj\lib_str.pbi
C:\work\solarium\Flash\Obj\menu.pbi
C:\work\solarium\Flash\Obj\menudesc.pbi
C:\work\solarium\Flash\Obj\mode.pbi
C:\work\solarium\Flash\Obj\modem.pbi
C:\work\solarium\Flash\Obj\modem_task.pbi
C:\work\solarium\Flash\Obj\os_core.pbi
C:\work\solarium\Flash\Obj\os_cpu_c.pbi
C:\work\solarium\Flash\Obj\os_dbg.pbi
C:\work\solarium\Flash\Obj\os_dcc.pbi
C:\work\solarium\Flash\Obj\os_flag.pbi
C:\work\solarium\Flash\Obj\os_mbox.pbi
C:\work\solarium\Flash\Obj\os_mem.pbi
C:\work\solarium\Flash\Obj\os_mutex.pbi
C:\work\solarium\Flash\Obj\os_q.pbi
C:\work\solarium\Flash\Obj\os_sem.pbi
C:\work\solarium\Flash\Obj\os_task.pbi
C:\work\solarium\Flash\Obj\os_time.pbi
C:\work\solarium\Flash\Obj\os_tmr.pbi
C:\work\solarium\Flash\Obj\spi.pbi
C:\work\solarium\Flash\Obj\time.pbi
C:\work\solarium\Flash\Obj\uart0.pbi
C:\work\solarium\Flash\Obj\uart1.pbi
C:\work\solarium\Flash\Obj\uart2.pbi
C:\work\solarium\Flash\Obj\validator.pbi

View File

@ -1,63 +0,0 @@
This is an internal working file generated by the Source Browser.
21:12 35s
C:\work\solarium\DRIVERS\fram\spi.c
C:\work\solarium\DRIVERS\fram\spi.c
--diag_suppress
Pa039
-o
C:\work\solarium\Flash\Obj\
--no_cse
--no_unroll
--no_inline
--no_code_motion
--no_tbaa
--no_clustering
--no_scheduling
--debug
--endian=little
--cpu=ARM7TDMI-S
-e
--fpu=None
--dlib_config
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\INC\c\DLib_Config_Normal.h
-I
C:\work\solarium\OS\app\
-I
C:\work\solarium\OS\bsp\
-I
C:\work\solarium\OS\uc\cpu\
-I
C:\work\solarium\OS\uc\lib\
-I
C:\work\solarium\OS\uc\os_ii\port\
-I
C:\work\solarium\OS\uc\os_ii\source\
-I
C:\work\solarium\DRIVERS\lcd\
-I
C:\work\solarium\DRIVERS\keyboard\
-I
C:\work\solarium\DRIVERS\fram\
-I
C:\work\solarium\DRIVERS\ccnet\
-I
C:\work\solarium\DRIVERS\fiscal\
-I
C:\work\solarium\DRIVERS\modem\
-I
C:\work\solarium\PROJECT\
-I
C:\work\solarium\PROJECT\app\
-I
C:\work\solarium\PROJECT\service\
-I
C:\work\solarium\PROJECT\menu\
-I
C:\work\solarium\PROJECT\data\
-I
C:\work\solarium\PROJECT\tools\
--interwork
--cpu_mode
thumb
-On
--use_c++_inline

View File

@ -1,63 +0,0 @@
This is an internal working file generated by the Source Browser.
21:12 34s
C:\work\solarium\DRIVERS\fiscal\uart0.c
C:\work\solarium\DRIVERS\fiscal\uart0.c
--diag_suppress
Pa039
-o
C:\work\solarium\Flash\Obj\
--no_cse
--no_unroll
--no_inline
--no_code_motion
--no_tbaa
--no_clustering
--no_scheduling
--debug
--endian=little
--cpu=ARM7TDMI-S
-e
--fpu=None
--dlib_config
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\INC\c\DLib_Config_Normal.h
-I
C:\work\solarium\OS\app\
-I
C:\work\solarium\OS\bsp\
-I
C:\work\solarium\OS\uc\cpu\
-I
C:\work\solarium\OS\uc\lib\
-I
C:\work\solarium\OS\uc\os_ii\port\
-I
C:\work\solarium\OS\uc\os_ii\source\
-I
C:\work\solarium\DRIVERS\lcd\
-I
C:\work\solarium\DRIVERS\keyboard\
-I
C:\work\solarium\DRIVERS\fram\
-I
C:\work\solarium\DRIVERS\ccnet\
-I
C:\work\solarium\DRIVERS\fiscal\
-I
C:\work\solarium\DRIVERS\modem\
-I
C:\work\solarium\PROJECT\
-I
C:\work\solarium\PROJECT\app\
-I
C:\work\solarium\PROJECT\service\
-I
C:\work\solarium\PROJECT\menu\
-I
C:\work\solarium\PROJECT\data\
-I
C:\work\solarium\PROJECT\tools\
--interwork
--cpu_mode
thumb
-On
--use_c++_inline

View File

@ -1,63 +0,0 @@
This is an internal working file generated by the Source Browser.
21:12 33s
C:\work\solarium\DRIVERS\ccnet\uart1.c
C:\work\solarium\DRIVERS\ccnet\uart1.c
--diag_suppress
Pa039
-o
C:\work\solarium\Flash\Obj\
--no_cse
--no_unroll
--no_inline
--no_code_motion
--no_tbaa
--no_clustering
--no_scheduling
--debug
--endian=little
--cpu=ARM7TDMI-S
-e
--fpu=None
--dlib_config
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\INC\c\DLib_Config_Normal.h
-I
C:\work\solarium\OS\app\
-I
C:\work\solarium\OS\bsp\
-I
C:\work\solarium\OS\uc\cpu\
-I
C:\work\solarium\OS\uc\lib\
-I
C:\work\solarium\OS\uc\os_ii\port\
-I
C:\work\solarium\OS\uc\os_ii\source\
-I
C:\work\solarium\DRIVERS\lcd\
-I
C:\work\solarium\DRIVERS\keyboard\
-I
C:\work\solarium\DRIVERS\fram\
-I
C:\work\solarium\DRIVERS\ccnet\
-I
C:\work\solarium\DRIVERS\fiscal\
-I
C:\work\solarium\DRIVERS\modem\
-I
C:\work\solarium\PROJECT\
-I
C:\work\solarium\PROJECT\app\
-I
C:\work\solarium\PROJECT\service\
-I
C:\work\solarium\PROJECT\menu\
-I
C:\work\solarium\PROJECT\data\
-I
C:\work\solarium\PROJECT\tools\
--interwork
--cpu_mode
thumb
-On
--use_c++_inline

View File

@ -1,63 +0,0 @@
This is an internal working file generated by the Source Browser.
21:12 39s
C:\work\solarium\DRIVERS\modem\uart2.c
C:\work\solarium\DRIVERS\modem\uart2.c
--diag_suppress
Pa039
-o
C:\work\solarium\Flash\Obj\
--no_cse
--no_unroll
--no_inline
--no_code_motion
--no_tbaa
--no_clustering
--no_scheduling
--debug
--endian=little
--cpu=ARM7TDMI-S
-e
--fpu=None
--dlib_config
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\INC\c\DLib_Config_Normal.h
-I
C:\work\solarium\OS\app\
-I
C:\work\solarium\OS\bsp\
-I
C:\work\solarium\OS\uc\cpu\
-I
C:\work\solarium\OS\uc\lib\
-I
C:\work\solarium\OS\uc\os_ii\port\
-I
C:\work\solarium\OS\uc\os_ii\source\
-I
C:\work\solarium\DRIVERS\lcd\
-I
C:\work\solarium\DRIVERS\keyboard\
-I
C:\work\solarium\DRIVERS\fram\
-I
C:\work\solarium\DRIVERS\ccnet\
-I
C:\work\solarium\DRIVERS\fiscal\
-I
C:\work\solarium\DRIVERS\modem\
-I
C:\work\solarium\PROJECT\
-I
C:\work\solarium\PROJECT\app\
-I
C:\work\solarium\PROJECT\service\
-I
C:\work\solarium\PROJECT\menu\
-I
C:\work\solarium\PROJECT\data\
-I
C:\work\solarium\PROJECT\tools\
--interwork
--cpu_mode
thumb
-On
--use_c++_inline

Binary file not shown.

View File

@ -453,7 +453,7 @@ void UserAppTask(void *p_arg)
if (err) {SetFiscalErrorByCode(err);}
SaveEventRecord(0, JOURNAL_EVENT_PRINT_Z, GetTimeSec());
GoToPreviousMenu();
ClrFiscalErrorByCode(FR_ERROR_CODE_4e);
ClrFiscalErrorByCode(FR_ERROR_CODE_4E);
}
}
else if (GetCurrentMenu() == bufReportMenuPanel)

View File

@ -1175,46 +1175,35 @@ CPU_INT08U const *ErrorNumberList0[ERRORS_NUM] = {"
"ошибка",
"ошибка",
"ФР:01h-неисправен",
"ФР:02h-отсутствует",
"ФР:03h-отсутствует",
"ФР:04h-некорр.п-ры",
"ФР:05h-нет",
"ФР:06h-ФП в режиме",
"ФР:07h-некорр.п-ры",
"ФР:08h-команда",
"ФР:09h-некорр.",
"ФР:0Ah-формат данных",
"ФР:0Bh-неиспр.ячейка",
"ФР:11h-не введена",
"ФР:12h-заводской",
"ФР:13h-текущая дата",
"ФР:14h-ФП",
"ФР:15h-Смена",
"ФР:16h-Смена",
"ФР:17h-Ошибка номера",
"ФР:18h-Ошибка даты",
"ФР:19h-Нет данных",
"ФР:1Ah-Оошибка ФП",
"ФР:1Bh-Заводской",
"ФР:1Ch-Есть",
"ФР:1Dh-Повреждена",
"ФР:1Fh-Отсутствует",
"ФР:20h-Переполнение",
"ФР:21h-Ошибка суммы",
"ФР:22h-Неверная дата",
"ФР:23h-Нет записи",
"ФР:24h-Область",
"ФР:25h-Нет",
"ФР:28h-В ФП более",
"ФР:01h-Неизвестная",
"ФР:02h-Неверное",
"ФР:03h-Ошибка ФН",
"ФР:04h-Ошибка КС",
"ФР:05h-Закончен срок",
"ФР:06h-Архив ФН",
"ФР:07h-Неверные дата",
"ФР:08h-Нет ",
"ФР:09h-Некорр.",
"ФР:10h-Превышение",
"ФР:11h-Нет",
"ФР:12h-Исчерпан",
"ФР:14h-Исчерпан",
"ФР:15h-Исчерпан",
"ФР:16h-Смена более",
"ФР:17h-Неверная",
"ФР:20h-Сообщение",
"ФР:2Fh-Таймаут ",
"ФР:30h-ФН ",
"ФР:33h-Некорректные",
"ФР:34h-Нет",
"ФР:35h-Некорректный",
"ФР:36h-Некорректные",
"ФР:37h-Команда",
"ФР:38h-Ошибка в ПЗУ",
"ФР:38h-Ошибка",
"ФР:39h-Внутренняя",
"ФР:3Ah-Переполнение",
"ФР:3Ch-ЭКЛЗ:",
"ФР:3Ch-Смена",
"ФР:3Dh-Смена",
"ФР:3Eh-Переполнение",
"ФР:3Fh-Переполнение",
"ФР:40h-Переполнение",
@ -1226,6 +1215,7 @@ CPU_INT08U const *ErrorNumberList0[ERRORS_NUM] = {"
"ФР:46h-Не хватает",
"ФР:47h-Переполнение",
"ФР:48h-Переполнение",
"ФР:49h-Опер.невозм.",
"ФР:4Ah-Открыт чек",
"ФР:4Bh-Буфер чека",
"ФР:4Ch-Переполнение",
@ -1237,8 +1227,8 @@ CPU_INT08U const *ErrorNumberList0[ERRORS_NUM] = {"
"ФР:52h-Переполнение",
"ФР:53h-Переполнение",
"ФР:54h-Переполнение",
"ФР:55h-Чек закрыт",
"ФР:56h-Нет док.",
"ФР:57h-ЭКЛЗ:",
"ФР:58h-Ожидание",
"ФР:59h-Документ",
"ФР:5Bh-Переполнение",
@ -1250,10 +1240,8 @@ CPU_INT08U const *ErrorNumberList0[ERRORS_NUM] = {"
"ФР:61h-Переполнение",
"ФР:62h-Переполнение",
"ФР:63h-Переполнение",
"ФР:64h-ФП отсутствует",
"ФР:65h-Не хватает",
"ФР:66h-Переполнение",
"ФР:67h-Ошибка связи",
"ФР:68h-Не хватает",
"ФР:69h-Переполнение",
"ФР:6Ah-Ошибка",
@ -1262,26 +1250,19 @@ CPU_INT08U const *ErrorNumberList0[ERRORS_NUM] = {"
"ФР:6Dh-Не хватает",
"ФР:6Eh-Переполнение",
"ФР:6Fh-Переполнение",
"ФР:70h-Переполнение",
"ФР:71h-Ошибка",
"ФР:72h-Команда не",
"ФР:73h-Команда не",
"ФР:74h-Ошибка ОЗУ",
"ФР:75h-Ошибка",
"ФР:76h-Принтер:",
"ФР:77h-Принтер:",
"ФР:78h-Замена ПО",
"ФР:79h-Замена ФП",
"ФП:7Ah-Поле не",
"ФР:7Bh-Ошибка",
"ФР:7Ch-Не совпадает",
"ФР:7Dh-Неверный",
"ФР:7Eh-Неверное",
"ФР:7Fh-Переполнение",
"ФР:80h-Ошибка",
"ФР:81h-Ошибка",
"ФР:82h-Ошибка",
"ФР:83h-Ошибка",
"ФР:84h-Переполнение",
"ФР:85h-Переполнение",
"ФР:86h-Переполнение",
@ -1293,36 +1274,16 @@ CPU_INT08U const *ErrorNumberList0[ERRORS_NUM] = {"
"ФР:8Ch-Отриц.",
"ФР:8Dh-Отрицательный",
"ФР:8Eh-Нулевой итог",
"ФР:8Fh-Касса не",
"ФР:90h-Поле прев.",
"ФР:91h-Выход за",
"ФР:92h-Наложение",
"ФР:93h-Восстановление",
"ФР:94h-Исчерпан",
"ФР:A0h-Ошибка связи",
"ФР:A1h-ЭКЛЗ",
"ФР:A2h-ЭКЛЗ: ",
"ФР:A3h-Некорректное",
"ФР:A4h-Авария ЭКЛЗ",
"ФР:A5h-Авария КС",
"ФР:A6h-Исчерпан",
"ФР:A7h-ЭКЛЗ",
"ФР:A8h-ЗКЛЗ:",
"ФР:A9h-ЭКЛЗ:",
"ФР:AAh-Переполнение",
"ФР:B0h-ЭКЛЗ:",
"ФР:B1h-ЭКЛЗ:",
"ФР:B2h-ЭКЛЗ:",
"ФР:C0h-Контроль",
"ФР:C1h-ЭКЛЗ:",
"ФР:C2h-Превышение",
"ФР:C3h-Несовпадение",
"ФР:C4h-Несовпадение",
//"ФР:С5h-Буфер",
//"ФР:C6h-Подкладной",
//"ФР:C7h-Поле не",
//"ФР:С8h-Отсутствуют",
"ФР:C7h-Поле не",
"ФР:С8h-Отсутствуют"
};
TDataDescStruct const JournalErrorNumberDesc0 = {
@ -1369,47 +1330,37 @@ CPU_INT08U const *ErrorNumberList1[ERRORS_NUM] = {"
"маг.датчика",
"датчика",
"модема",
"связи с ФР",
"ФП1,ФП2 или часы",
"ФП 1",
"ФП 2",
"в команде к ФП",
"связи с ФР",
"команда", // ФР:01h
"состояние ФН",
"",
"",
"эксплуатации ФН",
"переполнен",
"и/или время",
"запрошенных данных",
"вывода данных",
"в команде ФП",
"не подд.ФП",
"длина команды ",
"не BCD",
"памяти ФП",
"лицензия",
"номер уже введен",
"меньше даты в ФП",
"переполнена",
"уже открыта",
"не открыта",
"смены",
"смены",
"в ФП",
"",
"номер не введен",
"поврежд. запись",
"последняя запись",
"память регистров",
"денежного регистра",
"",
"",
"активизации",
"акт.переполнена",
"активизации",
"2х сбойных записей",
"параметры в команде",
"знач.пар.к-ды",
"разм.TLV данных",
"трансп.соед.",
"ресурс КС",
"ресурс хранения",
"ресурс ожидания",
"24 часов",
"разница во времени",
"от ОФД не принято",
"обмена с ФН",
"не отвечает",
"параметры в к-де",
"данных",
"параметр",
"параметры",
"не поддерж.ФР",
"",
"ошибка ПО ФР",
"накопления в смене",
"неверный рег.номер",
"параметры", // 36h
"не поддерживается",
"в ПЗУ",
"ошибка ПО ККТ",
"нак.по надб.",
"откр.-операция невозм.",
"закр.-операция невозм.", //3Dh
"накоп.по секциям",
"накоп.по скидкам",
"диапазона скидок",
@ -1421,6 +1372,7 @@ CPU_INT08U const *ErrorNumberList1[ERRORS_NUM] = {"
"наличности в кассе",
"накопления по налогам",
"итога чека",
"в откр.чеке",
"операция невозможна",
"переполнен",
"накоп.по налогам",
@ -1432,8 +1384,8 @@ CPU_INT08U const *ErrorNumberList1[ERRORS_NUM] = {"
"накоплений 2 в смене",
"накоплений 3 в смене",
"накоплений 4 в смене",
"операция невозм.",
"для повтора",
"ошибка кол-ва смен",
"команды продолжения",
"открыт другим оп.",
"диапазона надбавок",
@ -1445,10 +1397,8 @@ CPU_INT08U const *ErrorNumberList1[ERRORS_NUM] = {"
"диапазона цены",
"диапазона кол-ва",
"диапазона отдела",
"",
"денег в секции",
"денег в секции",
"с ФП",
"денег по налогам",
"денег по налогам",
"питания",
@ -1457,26 +1407,19 @@ CPU_INT08U const *ErrorNumberList1[ERRORS_NUM] = {"
"денег по налогу",
"денег по налогу",
"по выплате в смене",
"ФП",
"отрезчика",
"поддерж.",
"поддерж.",
"",
"питания",
"нет импульсов",
"нет сигнала",
"",
"",
"редактируется",
"оборудования",
"дата",
"формат даты",
"значение в поле длины",
"диапазона итога чека",
"связи с ФП",
"связи с ФП",
"связи с ФП",
"связи с ФП",
"наличности",
"по продажам",
"по покупкам",
@ -1488,36 +1431,16 @@ CPU_INT08U const *ErrorNumberList1[ERRORS_NUM] = {"
"итог надбавки",
"итог скидки в чеке",
"чека",
"фискализирована",
"размер в настройках",
"границу поля печати",
"полей",
"ОЗУ прошло успешно",
"лимит операций в чеке",
"с ЭКЛЗ",
"отсутствует",
"Некорр.формат команды",
"состояние ЭКЛЗ",
"",
"в составе ЭКЛЗ",
"врем.ресурс ЭКЛЗ",
"переполнена",
"Неверные дата и время ",
"Нет запрошенных данных ",
"ЭКЛЗ",
"Переполнение кол-ва",
"Переполнение суммы",
"Уже активизирована",
"даты и времени",
"суточный отчет",
"напряжения",
"итогов чека и ЭКЛЗ",
"номеров смен",
//"подк.док.пуст ",
//"док.отсутствует",
//"редактируется",
//"импульсы"
"редактируется",
"импульсы тахо."
};
TDataDescStruct const JournalErrorNumberDesc1 = {
@ -1571,7 +1494,8 @@ CPU_INT08U const *ErrorNumberListEng[ERRORS_NUM] =
"Nekriticheskaya oshibka kupuropriemnika",
"Oshibka svyazi s modemom",
"Oshibka svyazi s FR",
"Oshibka svyazi s FR",
"Oshibka FR 0x01",
"Oshibka FR 0x02",
"Oshibka FR 0x03",
@ -1581,30 +1505,18 @@ CPU_INT08U const *ErrorNumberListEng[ERRORS_NUM] =
"Oshibka FR 0x07",
"Oshibka FR 0x08",
"Oshibka FR 0x09",
"Oshibka FR 0x0A",
"Oshibka FR 0x0B",
"Oshibka FR 0x10",
"Oshibka FR 0x11",
"Oshibka FR 0x12",
"Oshibka FR 0x13",
"Oshibka FR 0x14",
"Oshibka FR 0x15",
"Oshibka FR 0x16",
"Oshibka FR 0x17",
"Oshibka FR 0x18",
"Oshibka FR 0x19",
"Oshibka FR 0x1A",
"Oshibka FR 0x1B",
"Oshibka FR 0x1C",
"Oshibka FR 0x1D",
"Oshibka FR 0x1F",
"Oshibka FR 0x20",
"Oshibka FR 0x21",
"Oshibka FR 0x22",
"Oshibka FR 0x23",
"Oshibka FR 0x24",
"Oshibka FR 0x25",
"Oshibka FR 0x28",
"Oshibka FR 0x2F",
"Oshibka FR 0x30",
"Oshibka FR 0x33",
"Oshibka FR 0x34",
"Oshibka FR 0x35",
"Oshibka FR 0x36",
"Oshibka FR 0x37",
@ -1612,6 +1524,7 @@ CPU_INT08U const *ErrorNumberListEng[ERRORS_NUM] =
"Oshibka FR 0x39",
"Oshibka FR 0x3A",
"Oshibka FR 0x3C",
"Oshibka FR 0x3D",
"Oshibka FR 0x3E",
"Oshibka FR 0x3F",
"Oshibka FR 0x40",
@ -1623,6 +1536,7 @@ CPU_INT08U const *ErrorNumberListEng[ERRORS_NUM] =
"Oshibka FR 0x46",
"Oshibka FR 0x47",
"Oshibka FR 0x48",
"Oshibka FR 0x49",
"Oshibka FR 0x4A",
"Oshibka FR 0x4B",
"Oshibka FR 0x4C",
@ -1634,8 +1548,8 @@ CPU_INT08U const *ErrorNumberListEng[ERRORS_NUM] =
"Oshibka FR 0x52",
"Oshibka FR 0x53",
"Oshibka FR 0x54",
"Oshibka FR 0x55",
"Oshibka FR 0x56",
"Oshibka FR 0x57",
"Oshibka FR 0x58",
"Oshibka FR 0x59",
"Oshibka FR 0x5B",
@ -1647,10 +1561,8 @@ CPU_INT08U const *ErrorNumberListEng[ERRORS_NUM] =
"Oshibka FR 0x61",
"Oshibka FR 0x62",
"Oshibka FR 0x63",
"Oshibka FR 0x64",
"Oshibka FR 0x65",
"Oshibka FR 0x66",
"Oshibka FR 0x67",
"Oshibka FR 0x68",
"Oshibka FR 0x69",
"Oshibka FR 0x6A",
@ -1659,26 +1571,19 @@ CPU_INT08U const *ErrorNumberListEng[ERRORS_NUM] =
"Oshibka FR 0x6D",
"Oshibka FR 0x6E",
"Oshibka FR 0x6F",
"Oshibka FR 0x70",
"Oshibka FR 0x71",
"Oshibka FR 0x72",
"Oshibka FR 0x73",
"Oshibka FR 0x74",
"Oshibka FR 0x75",
"Oshibka FR 0x76",
"Oshibka FR 0x77",
"Oshibka FR 0x78",
"Oshibka FR 0x79",
"Oshibka FR 0x7A",
"Oshibka FR 0x7B",
"Oshibka FR 0x7C",
"Oshibka FR 0x7D",
"Oshibka FR 0x7E",
"Oshibka FR 0x7F",
"Oshibka FR 0x80",
"Oshibka FR 0x81",
"Oshibka FR 0x82",
"Oshibka FR 0x83",
"Oshibka FR 0x84",
"Oshibka FR 0x85",
"Oshibka FR 0x86",
@ -1690,31 +1595,16 @@ CPU_INT08U const *ErrorNumberListEng[ERRORS_NUM] =
"Oshibka FR 0x8C",
"Oshibka FR 0x8D",
"Oshibka FR 0x8E",
"Oshibka FR 0x8F",
"Oshibka FR 0x90",
"Oshibka FR 0x91",
"Oshibka FR 0x92",
"Oshibka FR 0x93",
"Oshibka FR 0x94",
"Oshibka FR 0xA0",
"Oshibka FR 0xA1",
"Oshibka FR 0xA2",
"Oshibka FR 0xA3",
"Oshibka FR 0xA4",
"Oshibka FR 0xA5",
"Oshibka FR 0xA6",
"Oshibka FR 0xA7",
"Oshibka FR 0xA8",
"Oshibka FR 0xA9",
"Oshibka FR 0xAA",
"Oshibka FR 0xB0",
"Oshibka FR 0xB1",
"Oshibka FR 0xB2",
"Oshibka FR 0xC0",
"Oshibka FR 0xC1",
"Oshibka FR 0xC2",
"Oshibka FR 0xC3"
"Oshibka FR 0xC4"
"Oshibka FR 0xC4",
"Oshibka FR 0xC7",
"Oshibka FR 0xC8"
};
TDataDescStruct const JournalErrorNumberDescEng = {
@ -2251,6 +2141,124 @@ TDataDescStruct const BillFormatDesc = {
1
};
/*************************************
Система налогообложения
*************************************/
TRangeValueULONG const TaxSystemRange = {0, 5};
CPU_INT08U const TaxSystemName[] = "Система нал.";
CPU_INT08U const TaxSystemList_str0[] = "ОСН";
CPU_INT08U const TaxSystemList_str1[] = "УСН д";
CPU_INT08U const TaxSystemList_str2[] = "УСН д-р";
CPU_INT08U const TaxSystemList_str3[] = "ЕНВД";
CPU_INT08U const TaxSystemList_str4[] = "ЕСП";
CPU_INT08U const TaxSystemList_str5[] = "ПСН";
CPU_INT08U const *TaxSystemList[] = {TaxSystemList_str0, TaxSystemList_str1, TaxSystemList_str2, TaxSystemList_str3, TaxSystemList_str4, TaxSystemList_str5};
TDataDescStruct const TaxSystemDesc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
0, // указатель на дескриптор индекса массива
(void*)offsetof(TFramMap, TaxSystem), // указатель на переменную или адрес FRAM
(void*)&TaxSystemRange, // указатель на границы параметра
NULL, // функция по изменению
sizeof(CPU_INT32U), // смещение между элементами в массиве
TaxSystemName, // указатель на строку названия параметра
DATA_IS_INDEX, // признак индексного параметра (список строк)
TaxSystemList, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
0
};
/*************************************
Индекс налога
*************************************/
TRangeValueULONG const TaxFormatRange = {0, 6};
CPU_INT08U const TaxFormatName[] = "Налог:";
CPU_INT08U const TaxFormatList_str0[] = "откл.";
CPU_INT08U const TaxFormatList_str1[] = " 1 ";
CPU_INT08U const TaxFormatList_str2[] = " 2 ";
CPU_INT08U const TaxFormatList_str3[] = " 3 ";
CPU_INT08U const TaxFormatList_str4[] = " 4 ";
CPU_INT08U const TaxFormatList_str5[] = " 5 ";
CPU_INT08U const TaxFormatList_str6[] = " 6 ";
CPU_INT08U const *TaxFormatList[] = {TaxFormatList_str0, TaxFormatList_str1, TaxFormatList_str2, TaxFormatList_str3, TaxFormatList_str4, TaxFormatList_str5, TaxFormatList_str6};
TDataDescStruct const TaxFormatDesc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
0, // указатель на дескриптор индекса массива
(void*)offsetof(TFramMap, TaxFormat), // указатель на переменную или адрес FRAM
(void*)&TaxFormatRange, // указатель на границы параметра
NULL, // функция по изменению
sizeof(CPU_INT32U), // смещение между элементами в массиве
TaxFormatName, // указатель на строку названия параметра
DATA_IS_INDEX, // признак индексного параметра (список строк)
TaxFormatList, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
0
};
/*************************************
Предмет расчета
*************************************/
TRangeValueULONG const SubjSellRange = {0, 2};
CPU_INT08U const SubjSellName[] = "Предм.расчета";
CPU_INT08U const SubjSellList_str0[] = "ТОВАР";
CPU_INT08U const SubjSellList_str1[] = "РАБОТА";
CPU_INT08U const SubjSellList_str2[] = "УСЛУГА";
CPU_INT08U const *SubjSellList[] = {SubjSellList_str0, SubjSellList_str1, SubjSellList_str2};
TDataDescStruct const SubjSellDesc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
0, // указатель на дескриптор индекса массива
(void*)offsetof(TFramMap, SubjSell), // указатель на переменную или адрес FRAM
(void*)&SubjSellRange, // указатель на границы параметра
NULL, // функция по изменению
sizeof(CPU_INT32U), // смещение между элементами в массиве
SubjSellName, // указатель на строку названия параметра
DATA_IS_INDEX, // признак индексного параметра (список строк)
SubjSellList, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
0
};
/*************************************
Тип команд работы с чеком
*************************************/
TRangeValueULONG const CommandV2Range = {0, 1};
CPU_INT08U const CommandV2Name[] = "Тип команд";
CPU_INT08U const CommandV2List_str0[] = "старый";
CPU_INT08U const CommandV2List_str1[] = "V2";
CPU_INT08U const *CommandV2List[] = {CommandV2List_str0, CommandV2List_str1};
TDataDescStruct const CommandV2Desc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
0, // указатель на дескриптор индекса массива
(void*)offsetof(TFramMap, CommandV2), // указатель на переменную или адрес FRAM
(void*)&CommandV2Range, // указатель на границы параметра
NULL, // функция по изменению
sizeof(CPU_INT32U), // смещение между элементами в массиве
CommandV2Name, // указатель на строку названия параметра
DATA_IS_INDEX, // признак индексного параметра (список строк)
CommandV2List, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
1
};
/*************************************
Название услуги
@ -2792,6 +2800,12 @@ const TDataDescArrayStruct AllDataArray[] = {
&DeferredStartDesc,
&StartButtonNameDesc,
&TaxSystemDesc,
&TaxFormatDesc,
&SubjSellDesc,
&DisableFiscalErrorsDesc,
&CommandV2Desc,
NULL
};

View File

@ -185,5 +185,9 @@ extern TDataDescStruct const IncasSendFlagDesc;
extern TDataDescStruct const IncasMoneyDesc;
extern TDataDescStruct const IncasTimeDesc;
extern TDataDescStruct const TaxFormatDesc;
extern TDataDescStruct const SubjSellDesc;
extern TDataDescStruct const CommandV2Desc;
extern TDataDescStruct const TaxSystemDesc;
#endif //#ifndef _DATADESC_H_

View File

@ -37,6 +37,11 @@ typedef struct{
CPU_INT32U StartButtonName;
CPU_INT32U DefferedStartEnabled[CHANNELS_NUM];
CPU_INT32U TaxFormat;
CPU_INT32U SubjSell;
CPU_INT32U CommandV2;
CPU_INT32U TaxSystem;
}TFramMap;

View File

@ -915,21 +915,49 @@ const TMenuLine line_FrMenu_3 = {
};
const TMenuLine line_FrMenu_4 = {
MENU_LINE_SHOW_DESC,
0,
(void*)&CommandV2Desc,
NULL
};
const TMenuLine line_FrMenu_5 = {
MENU_LINE_SHOW_DESC,
0,
(void*)&TaxSystemDesc,
NULL
};
const TMenuLine line_FrMenu_6 = {
MENU_LINE_SHOW_DESC,
0,
(void*)&TaxFormatDesc,
NULL
};
const TMenuLine line_FrMenu_7 = {
MENU_LINE_SHOW_DESC,
0,
(void*)&SubjSellDesc,
NULL
};
const TMenuLine line_FrMenu_8 = {
MENU_LINE_SHOW_DESC, // ??? ?????? ????
0, // ???. ?????
(void*)&ServiceNameDesc, // ????????? ?? ????????? ?????? ??? ??????????
NULL // ?????? ??? ????????
};
const TMenuLine line_FrMenu_5 = {
const TMenuLine line_FrMenu_9 = {
MENU_LINE_SHOW_DESC,
0,
(void*)&DisableFiscalErrorsDesc,
NULL
};
const TMenuLineArray arr_FrMenuArray[] = {&line_FrMenu_0, &line_FrMenu_1, &line_FrMenu_2, &line_FrMenu_3, &line_FrMenu_4, &line_FrMenu_5, NULL};
const TMenuPanel FrMenuPanel[] = {arr_FrMenuArray, NULL, 6, MENU_PANEL_STANDARD};
const TMenuLineArray arr_FrMenuArray[] = {&line_FrMenu_0, &line_FrMenu_1, &line_FrMenu_2, &line_FrMenu_3, &line_FrMenu_4, &line_FrMenu_5, &line_FrMenu_6, &line_FrMenu_7, &line_FrMenu_8, &line_FrMenu_9, NULL};
const TMenuPanel FrMenuPanel[] = {arr_FrMenuArray, NULL, 10, MENU_PANEL_STANDARD};
/***********************************
ÌÅÍÞ ÍÀÑÒÐÎÉÊÀ ÌÎÍÅÒÎÏÐÈÅÌÍÈÊÀ

View File

@ -136,6 +136,13 @@ void InitImpInput (void)
FIO0DIR_bit.P0_23 = 0;
FIO0MASK_bit.P0_23 = 0;
// inhibit
// PINSEL1_bit.P0_24 = 0x0;
// PINMODE1_bit.P0_24 = 0;
// FIO0DIR_bit.P0_24 = 1;
// FIO0MASK_bit.P0_24 = 0;
// FIO0SET_bit.P0_24 = 1;
pclk_freq = BSP_CPU_PclkFreq(23);
rld_cnts = pclk_freq / INPUT_CAPTURE_FREQ;

View File

@ -75,19 +75,8 @@ int CheckFiscalStatus()
memcpy(&flags, &FiscFullStatus.Flags, sizeof(CPU_INT16U));
// КРИТИЧНЫЕ ФЛАГИ:
// ЭКЛЗ (0 нет, 1 есть)
if (!(flags & (1L<<5)))
{
// нет ЭКЛЗ
SetFiscalErrorByCode(FR_ERROR_CODE_a1);
return -3;
}
else
{
ClrFiscalErrorByCode(FR_ERROR_CODE_a1);
}
ClrFiscalErrorByCode(FR_ERROR_CODE_6b);
ClrFiscalErrorByCode(FR_ERROR_CODE_6B);
// ПОДРЕЖИМ
switch (FiscFullStatus.SubMode)
{
@ -95,17 +84,17 @@ int CheckFiscalStatus()
// 1. Пассивное отсутствие бумаги ФР не в фазе печати операции не принимает от
// хоста команды, связанные с печатью на том документе, датчик которого сообщает об
// отсутствии бумаги.
SetFiscalErrorByCode(FR_ERROR_CODE_6b);
SetFiscalErrorByCode(FR_ERROR_CODE_6B);
return -4;
case 2:
// 2. Активное отсутствие бумаги ФР в фазе печати операции принимает только
// команды, не связанные с печатью. Переход из этого подрежима только в подрежим 3.
SetFiscalErrorByCode(FR_ERROR_CODE_6b);
SetFiscalErrorByCode(FR_ERROR_CODE_6B);
return -5;
case 3:
// 3. После активного отсутствия бумаги ФР ждет команду продолжения печати. Кроме
// этого принимает команды, не связанные с печатью.
SetFiscalErrorByCode(FR_ERROR_CODE_6b);
SetFiscalErrorByCode(FR_ERROR_CODE_6B);
// допечатываем чек
FiscPrintContinue(DEFAULT_PASS, &err);
return -6;
@ -146,7 +135,7 @@ int CheckFiscalStatus()
// закрываем смену в буфер
FiscPrintDayReportToBuf(30, &err);
// как только переполнение буфера, печатаем из буфера
if (err == FR_ERROR_CODE_4b)
if (err == FR_ERROR_CODE_4B)
{
SetFiscalErrorByCode(err);
SaveEventRecord(0, JOURNAL_EVENT_PRINT_BUF, GetTimeSec());
@ -177,22 +166,38 @@ int CheckFiscalStatus()
else if (autoclose==0)
{
// ошибка - должен прийти оператор и закрыть смену
SetFiscalErrorByCode(FR_ERROR_CODE_4e);
return -11;
SetFiscalErrorByCode(FR_ERROR_CODE_4E);
goto check_exit;
//return -11;
}
}
goto check_exit;
case 4:
// 4. Закрытая смена.
// îòêðûâàåì ñìåíó
if (FiscOpenDay(DEFAULT_PASS, &err) != FISC_OK)
{
if (err)
{
SetFiscalErrorByCode(err);
}
else
{
ClearFiscalErrors();
FiscalConnState = FISCAL_NOCONN;
SetErrorFlag(ERROR_FR_CONN);
}
return -12;
}
ClearFiscalErrors();
goto check_exit;
case 5:
// 5. Блокировка по неправильному паролю налогового инспектора.
SetFiscalErrorByCode(FR_ERROR_CODE_4f);
SetFiscalErrorByCode(FR_ERROR_CODE_4F);
goto check_exit;
case 6:
// 6. Ожидание подтверждения ввода даты.
SetFiscalErrorByCode(FR_ERROR_CODE_c0);
SetFiscalErrorByCode(FR_ERROR_CODE_C0);
goto check_exit;
case 8:
// 8. Открытый документ:
@ -201,6 +206,7 @@ int CheckFiscalStatus()
// 8.2. Возврат продажи.
// 8.3. Возврат покупки.
// 8.4. Нефискальный.
/*
{
CPU_INT64U cash = 0;
CPU_INT08U tax[4] = {0,0,0,0};
@ -208,9 +214,10 @@ int CheckFiscalStatus()
if (err)
{
SetFiscalErrorByCode(err);
return -11;
return -13;
}
}
*/
goto check_exit;
case 12:
// идет печать Z-отчета
@ -248,11 +255,11 @@ int ConnectFiscal(void)
// поллим
for (j = FISCAL_BAUDS_COUNT-1; j >= 0; j--)
{
Uart0_Init(fiscal_bauds[j]);
i = 10;
do
{
OSTimeDly(100);
Uart0_Init(fiscal_bauds[j]);
poll = FiscPollExt();
if ((poll == FISC_READY) || (poll == FISC_BUSY)) break;
} while (--i);
@ -323,10 +330,11 @@ int ConnectFiscalFast(void)
// поллим
for (j = FISCAL_BAUDS_COUNT-1; j >= 0; j--)
{
Uart0_Init(fiscal_bauds[j]);
i = 2;
do
{
OSTimeDly(100);
Uart0_Init(fiscal_bauds[j]);
poll = FiscPollExt();
if ((poll == FISC_READY) || (poll == FISC_BUSY)) break;
} while (--i);
@ -400,13 +408,14 @@ void InitFiscal(void)
int IsFiscalConnected(void)
{
int retval = 0;
CPU_INT32U enable;
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0;
#endif
GetData(&EnableFiscalDesc, &enable, 0, DATA_FLAG_SYSTEM_INDEX);
OS_ENTER_CRITICAL();
int retval;
if (FiscalConnState == FISCAL_CONN) retval=1;
else retval=0;
if ((enable) && (FiscalConnState == FISCAL_CONN)) retval=1;
OS_EXIT_CRITICAL();
return retval;
}
@ -473,154 +482,117 @@ void ClearFiscalErrors(void)
}
}
static const CPU_INT08U error_codes[FR_ERROR_NUMBER] = {
0x1,//Неисправен накопитель ФП 1, ФП 2 или часы
0x2,//Отсутствует ФП 1
0x3,//Отсутствует ФП 2
0x4,//Некорректные параметры в команде обращения к ФП
0x5,//Нет запрошенных данных
0x6,//ФП в режиме вывода данных
0x7,//Некорректные параметры в команде для данной реализации ФП
0x8,//Команда не поддерживается в данной реализации ФП
0x9,//Некорректная длина команды
0x0A,//Формат данных не BCD
0x0B,//Неисправна ячейка памяти ФП при записи итога
0x11,//Не введена лицензия
0x12,//Заводской номер уже введен
0x13,//Текущая дата меньше даты последней записи в ФП
0x14,//Область сменных итогов ФП переполнена
0x15,//Смена уже открыта
0x16,//Смена не открыта,//
0x17,//Номер первой смены больше номера последней смены,//
0x18,//Дата первой смены больше даты последней смены,//
0x19,//Нет данных в ФП,//
0x1A,//Область перерегистраций в ФП переполнена,//
0x1B,//Заводской номер не введен,//
0x1C,//В заданном диапазоне есть поврежденная запись,//
0x1D,//Повреждена последняя запись сменных итогов,//
0x1F,//Отсутствует память регистров,//
0x20,//Переполнение денежного регистра при добавлении,//
0x21,//Вычитаемая сумма больше содержимого денежного регистра,//
0x22,//Неверная дата,//
0x23,//Нет записи активизации,//
0x24,//Область активизаций переполнена,//
0x25,//Нет активизации с запрашиваемым номером,//
0x28,//В ФР более 2х сбойных записей,//
0x33,//Некорректные параметры в команде,//
0x35,//Некорректный параметр при данных настройках,//
0x36,//Некорректные параметры в команде для данной реализации ФР,//
0x37,//Команда не поддерживается в данной реализации ФР,//
0x38,//Ошибка в ПЗУ,//+
0x39,//Внутренняя ошибка ПО ФР,//
0x3A,//Переполнение накопления по надбавкам в смене,//
0x3C,//ЭКЛЗ: неверный регистрационный номер,//
0x3E,//Переполнение накопления по секциям в смене,//
0x3F,//Переполнение накопления по скидкам в смене,//
0x40,//Переполнение диапазона скидок,//
0x41,//Переполнение диапазона оплаты наличными,//
0x42,//Переполнение диапазона оплаты типом 2,//
0x43,//Переполнение диапазона оплаты типом 3,//
0x44,//Переполнение диапазона оплаты типом 4
0x45,//Cумма всех типов оплаты меньше итога чека,//
0x46,//Не хватает наличности в кассе,//
0x47,//Переполнение накопления по налогам в смене,//
0x48,//Переполнение итога чека,//
0x4A,//Открыт чек - операция невозможна,//
0x4B,//Буфер чека переполнен,//
0x4C,//Переполнение накопления по обороту налогов в смене,//
0x4D,//Вносимая безналичной оплатой сумма больше суммы чека,//
0x4E,//Смена превысила 24 часа,//
0x4F,//Неверный пароль,//
0x50,//Идет печать предыдущей команды,//
0x51,//Переполнение накоплений наличными в смене,//
0x52,//Переполнение накоплений по типу оплаты 2 в смене,//
0x53,//Переполнение накоплений по типу оплаты 3 в смене,//
0x54,//Переполнение накоплений по типу оплаты 4 в смене,//
0x56,//Нет документа для повтора,//
0x57,//ЭКЛЗ: количество закрытых смен не совпадает с ФП,//
0x58,//Ожидание команды продолжения печати,//
0x59,//Документ открыт другим оператором,//
0x5B,//Переполнение диапазона надбавок,//
0x5C,//Понижено напряжение 24В
0x5D,//Таблица не определена,//
0x5E,//Некорректная операция,//
0x5F,//Отрицательный итог чека,//
0x60,//Переполнение при умножении,//
0x61,//Переполнение диапазона цены,//
0x62,//Переполнение диапазона количества,//
0x63,//Переполнение диапазона отдела,//
0x64,//ФП отсутствует,//+
0x65,//Не хватает денег в секции,//
0x66,//Переполнение денег в секции,//
0x67,//Ошибка связи с ФП,//+
0x68,//Не хватает денег по обороту налогов,//
0x69,//Переполнение денег по обороту налогов,//
0x6A,//Ошибка питания в момент ответа по I
0x6B,//Нет чековой ленты,//
0x6C,//Нет контрольной ленты,//
0x6D,//Не хватает денег по налогу,//
0x6E,//Переполнение денег по налогу,//
0x6F,//Переполнение по выплате в смене,//
0x70,//Переполнение ФП,//
0x71,//Ошибка отрезчика,//+
0x72,//Команда не поддерживается в данном подрежиме,//
0x73,//Команда не поддерживается в данном режиме,//
0x74,//Ошибка ОЗУ,//
0x75,//Ошибка питания,//+
0x76,//Ошибка принтера: нет импульсов с тахогенератора,//+
0x77,//Ошибка принтера: нет сигнала с датчиков,//+
0x78,//Замена ПО,//
0x79,//Замена ФП,//
0x7A,//Поле не редактируется
0x7B,//Ошибка оборудования,//
0x7C,//Не совпадает дата,//
0x7D,//Неверный формат даты,//
0x7E,//Неверное значение в поле длины,//
0x7F,//Переполнение диапазона итога чека,//
0x80,//Ошибка связи с ФП,//+
0x81,//Ошибка связи с ФП,//+
0x82,//Ошибка связи с ФП,//+
0x83,//Ошибка связи с ФП,//+
0x84,//Переполнение наличности,//
0x85,//Переполнение по продажам в смене,//
0x86,//Переполнение по покупкам в смене,//
0x87,//Переполнение по возвратам продаж в смене,//
0x88,//Переполнение по возвратам покупок в смене,//
0x89,//Переполнение по внесению в смене,//
0x8A,//Переполнение по надбавкам в чеке,//
0x8B,//Переполнение по скидкам в чеке,//
0x8C,//Отрицательный итог надбавки в чеке,//
0x8D,//Отрицательный итог скидки в чеке,//
0x8E,//Нулевой итог чека,//
0x8F,//Касса не фискализирована,//,//
0x90,//Поле превышает размер, установленный в настройках
0x91,//Выход за границу поля печати при данных настройках шрифта
0x92,//Наложение полей
0x93,//Восстановление ОЗУ прошло успешно
0x94,//Исчерпан лимит операций в чеке
0xA0,//Ошибка связи с ЭКЛЗ
0xA1,//ЭКЛЗ отсутствует
0xA2,//ЭКЛЗ: Некорректный формат или параметр команды
0xA3,//Некорректное состояние ЭКЛЗ
0xA4,//Авария ЭКЛЗ
0xA5,//Авария КС в составе ЭКЛЗ
0xA6,//Исчерпан временной ресурс ЭКЛЗ
0xA7,//ЭКЛЗ переполнена
0xA8,//ЗКЛЗ: Неверные дата и время
0xA9,//ЭКЛЗ: Нет запрошенных данных
0xAA,//Переполнение ЭКЛЗ (отрицательный итог документа)
0xB0,//ЭКЛЗ: Переполнение в параметре количество
0xB1,//ЭКЛЗ: Переполнение в параметре сумма
0xB2,//ЭКЛЗ: Уже активизирована
0xC0,//Контроль даты и времени (подтвердите дату и время)
0xC1,//ЭКЛЗ: суточный отч?т с гашением прервать нельзя
0xC2,//Превышение напряжения в блоке питания
0xC3,//Несовпадение итогов чека и ЭКЛЗ
0xC4,//Несовпадение номеров смен
//0xC5,//Буфер подкладного документа пуст
//0xC6,//Подкладной документ отсутствует,//
//0xC7,//Поле не редактируется в данном режиме
//0xC8,//Отсутствуют,//импульсы от таходатчика
static const CPU_INT08U fr_error_codes[FR_ERROR_NUMBER] =
{
FR_ERROR_CODE_1,
FR_ERROR_CODE_2,
FR_ERROR_CODE_3,
FR_ERROR_CODE_4,
FR_ERROR_CODE_5,
FR_ERROR_CODE_6,
FR_ERROR_CODE_7,
FR_ERROR_CODE_8,
FR_ERROR_CODE_9,
FR_ERROR_CODE_10,
FR_ERROR_CODE_11,
FR_ERROR_CODE_12,
FR_ERROR_CODE_14,
FR_ERROR_CODE_15,
FR_ERROR_CODE_16,
FR_ERROR_CODE_17,
FR_ERROR_CODE_20,
FR_ERROR_CODE_2F,
FR_ERROR_CODE_30,
FR_ERROR_CODE_33,
FR_ERROR_CODE_34,
FR_ERROR_CODE_35,
FR_ERROR_CODE_36,
FR_ERROR_CODE_37,
FR_ERROR_CODE_38,
FR_ERROR_CODE_39,
FR_ERROR_CODE_3a,
FR_ERROR_CODE_3c,
FR_ERROR_CODE_3D,
FR_ERROR_CODE_3E,
FR_ERROR_CODE_3F,
FR_ERROR_CODE_40,
FR_ERROR_CODE_41,
FR_ERROR_CODE_42,
FR_ERROR_CODE_43,
FR_ERROR_CODE_44,
FR_ERROR_CODE_45,
FR_ERROR_CODE_46,
FR_ERROR_CODE_47,
FR_ERROR_CODE_48,
FR_ERROR_CODE_49,
FR_ERROR_CODE_4A,
FR_ERROR_CODE_4B,
FR_ERROR_CODE_4C,
FR_ERROR_CODE_4D,
FR_ERROR_CODE_4E,
FR_ERROR_CODE_4F,
FR_ERROR_CODE_50,
FR_ERROR_CODE_51,
FR_ERROR_CODE_52,
FR_ERROR_CODE_53,
FR_ERROR_CODE_54,
FR_ERROR_CODE_55,
FR_ERROR_CODE_56,
FR_ERROR_CODE_58,
FR_ERROR_CODE_59,
FR_ERROR_CODE_5B,
FR_ERROR_CODE_5C,
FR_ERROR_CODE_5D,
FR_ERROR_CODE_5E,
FR_ERROR_CODE_5F,
FR_ERROR_CODE_60,
FR_ERROR_CODE_61,
FR_ERROR_CODE_62,
FR_ERROR_CODE_63,
FR_ERROR_CODE_65,
FR_ERROR_CODE_66,
FR_ERROR_CODE_68,
FR_ERROR_CODE_69,
FR_ERROR_CODE_6A,
FR_ERROR_CODE_6B,
FR_ERROR_CODE_6C,
FR_ERROR_CODE_6D,
FR_ERROR_CODE_6E,
FR_ERROR_CODE_6F,
FR_ERROR_CODE_71,
FR_ERROR_CODE_72,
FR_ERROR_CODE_73,
FR_ERROR_CODE_74,
FR_ERROR_CODE_75,
FR_ERROR_CODE_77,
FR_ERROR_CODE_78,
FR_ERROR_CODE_7A,
FR_ERROR_CODE_7B,
FR_ERROR_CODE_7C,
FR_ERROR_CODE_7D,
FR_ERROR_CODE_7E,
FR_ERROR_CODE_7F,
FR_ERROR_CODE_84,
FR_ERROR_CODE_85,
FR_ERROR_CODE_86,
FR_ERROR_CODE_87,
FR_ERROR_CODE_88,
FR_ERROR_CODE_89,
FR_ERROR_CODE_8A,
FR_ERROR_CODE_8B,
FR_ERROR_CODE_8C,
FR_ERROR_CODE_8D,
FR_ERROR_CODE_8E,
FR_ERROR_CODE_90,
FR_ERROR_CODE_91,
FR_ERROR_CODE_92,
FR_ERROR_CODE_93,
FR_ERROR_CODE_94,
FR_ERROR_CODE_C0,
FR_ERROR_CODE_C2,
FR_ERROR_CODE_C4,
FR_ERROR_CODE_C7,
FR_ERROR_CODE_C8
};
// установка глобального флага ошибки ФР по ошибки коду драйвера
@ -629,7 +601,7 @@ void SetFiscalErrorByCode(CPU_INT08U err)
if (!err) return;
for (unsigned char i=0; i<FR_ERROR_NUMBER; i++)
{
if (error_codes[i] == err)
if (fr_error_codes[i] == err)
{
SetErrorFlag(ERROR_FR+i);
break;
@ -642,7 +614,7 @@ void ClrFiscalErrorByCode(CPU_INT08U err)
{
for (unsigned char i=0; i<FR_ERROR_NUMBER; i++)
{
if (error_codes[i] == err)
if (fr_error_codes[i] == err)
{
ClrErrorFlag(ERROR_FR+i);
break;
@ -661,6 +633,16 @@ int PrintFiscalBill(CPU_INT32U money, CPU_INT32U time)
CPU_INT08U tax[4] = {0,0,0,0};
CPU_INT32U format = 0;
CPU_INT08U repeat;
CPU_INT32U tax1;
CPU_INT08U subj;
CPU_INT32U subj32;
CPU_INT32U ext;
GetData(&TaxFormatDesc, &tax1, 0, DATA_FLAG_SYSTEM_INDEX);
tax[0] = (CPU_INT08U)tax1;
GetData(&SubjSellDesc, &subj32, 0, DATA_FLAG_SYSTEM_INDEX);
subj = (CPU_INT08U)subj32;
GetData(&CommandV2Desc, &ext, 0, DATA_FLAG_SYSTEM_INDEX);
FPend();
@ -718,8 +700,14 @@ repeat_open:
repeat_sell1:
if (ext)
{
count *= 1000;
}
// печатаем количество минут
if (FiscMakeSell(DEFAULT_PASS, &count, &price, 0, &tax[0], "Услуги солярия, мин.", &err) != FISC_OK)
if (((ext == 0) && (FiscMakeSell(DEFAULT_PASS, &count, &price, 0, &tax[0], "Óñëóãè ñîëÿðèÿ, ìèí.", &err) != FISC_OK))
|| ((ext) && (FiscMakeSellV2(DEFAULT_PASS, &count, &price, 0, &tax[0], subj, "Óñëóãè ñîëÿðèÿ, ìèí.", &err) != FISC_OK)))
{
if (err)
{
@ -763,7 +751,10 @@ repeat_sell2:
// печатаем только общую сумму
count = 1000;
price = money*100;
if (FiscMakeSell(DEFAULT_PASS, &count, &price, 0, &tax[0], "Услуги солярия", &err) != FISC_OK)
if (ext) count *= 1000;
if (((ext == 0) && (FiscMakeSell(DEFAULT_PASS, &count, &price, 0, &tax[0], "Óñëóãè ñîëÿðèÿ", &err) != FISC_OK))
|| ((ext) && (FiscMakeSellV2(DEFAULT_PASS, &count, &price, 0, &tax[0], subj, "Óñëóãè ñîëÿðèÿ", &err) != FISC_OK)))
{
if (err)
{
@ -795,15 +786,21 @@ repeat_sell2:
return -400;
}
}
}
repeat = 0;
repeat_close:
if (FiscCloseBill(DEFAULT_PASS, &cash, &tax[0], "Спасибо за покупку!!!", &err) != FISC_OK)
if (ext)
{
GetData(&TaxSystemDesc, &tax1, 0, DATA_FLAG_SYSTEM_INDEX);
tax[0] = (CPU_INT08U)tax1;
}
if (((ext == 0) && (FiscCloseBill(DEFAULT_PASS, &cash, &tax[0], "Ñïàñèáî çà ïîêóïêó!!!", &err) != FISC_OK))
|| ((ext) && (FiscCloseBillV2(DEFAULT_PASS, &cash, tax[0], "Ñïàñèáî çà ïîêóïêó!!!!", &err) != FISC_OK))
)
{
if (err)
{
@ -841,28 +838,11 @@ repeat_close:
return 0;
}
/*
// печать чека на ФР с повторами, на случай закрытия смены
int PrintFiscalBillRepeated(CPU_INT32U money, CPU_INT32U time)
{
int res = PrintFiscalBill(money, time);
int i=4;
while ((res != 0) && (i>0))
{
OSTimeDly(5000);
res = PrintFiscalBill(money, time);
i--;
}
return res;
}
*/
int TstFiscalErrorByCode(unsigned char code)
{
for (unsigned char i=0; i<FR_ERROR_NUMBER; i++)
{
if (error_codes[i] == code)
if (fr_error_codes[i] == code)
{
return TstErrorFlag(ERROR_FR+i);
}
@ -874,7 +854,7 @@ CPU_INT08U GetFiscalErrorNumberByCode(unsigned char code)
{
for (unsigned char i=0; i<FR_ERROR_NUMBER; i++)
{
if (error_codes[i] == code)
if (fr_error_codes[i] == code)
{
return i;
}
@ -882,79 +862,115 @@ CPU_INT08U GetFiscalErrorNumberByCode(unsigned char code)
return 0;
}
#define FR_CRITICAL_ERROR_NUM 70
#define FR_CRITICAL_ERROR_NUM 105
const CPU_INT08U FiscalCriticalErrorsTable[FR_CRITICAL_ERROR_NUM] = {
FR_ERROR_CODE_1,
FR_ERROR_CODE_2,
FR_ERROR_CODE_6,
FR_ERROR_CODE_a,
FR_ERROR_CODE_b,
FR_ERROR_CODE_11,
FR_ERROR_CODE_13,
FR_ERROR_CODE_14,
FR_ERROR_CODE_17,
FR_ERROR_CODE_18,
FR_ERROR_CODE_1a,
FR_ERROR_CODE_1c,
FR_ERROR_CODE_1d,
FR_ERROR_CODE_1f,
FR_ERROR_CODE_23,
FR_ERROR_CODE_24,
FR_ERROR_CODE_38,
FR_ERROR_CODE_39,
FR_ERROR_CODE_3a,
FR_ERROR_CODE_3c,
FR_ERROR_CODE_3e,
FR_ERROR_CODE_3f,
FR_ERROR_CODE_40,
FR_ERROR_CODE_41,
FR_ERROR_CODE_42,
FR_ERROR_CODE_43,
FR_ERROR_CODE_44,
FR_ERROR_CODE_47,
FR_ERROR_CODE_48,
FR_ERROR_CODE_4c,
FR_ERROR_CODE_4e,
FR_ERROR_CODE_51,
FR_ERROR_CODE_52,
FR_ERROR_CODE_53,
FR_ERROR_CODE_54,
FR_ERROR_CODE_57,
FR_ERROR_CODE_5b,
FR_ERROR_CODE_64,
FR_ERROR_CODE_67,
FR_ERROR_CODE_6a,
FR_ERROR_CODE_6b,
FR_ERROR_CODE_70,
FR_ERROR_CODE_71,
FR_ERROR_CODE_74,
FR_ERROR_CODE_75,
FR_ERROR_CODE_76,
FR_ERROR_CODE_77,
FR_ERROR_CODE_78,
FR_ERROR_CODE_79,
FR_ERROR_CODE_7b,
FR_ERROR_CODE_80,
FR_ERROR_CODE_81,
FR_ERROR_CODE_82,
FR_ERROR_CODE_83,
FR_ERROR_CODE_87,
FR_ERROR_CODE_88,
FR_ERROR_CODE_89,
FR_ERROR_CODE_8a,
FR_ERROR_CODE_8b,
FR_ERROR_CODE_a0,
FR_ERROR_CODE_a1,
FR_ERROR_CODE_a3,
FR_ERROR_CODE_a4,
FR_ERROR_CODE_a5,
FR_ERROR_CODE_a6,
FR_ERROR_CODE_a7,
FR_ERROR_CODE_a8,
FR_ERROR_CODE_a9,
FR_ERROR_CODE_c2,
FR_ERROR_CODE_c4
const CPU_INT08U FiscalCriticalErrorsTable[FR_CRITICAL_ERROR_NUM] =
{
FR_ERROR_CODE_1,
FR_ERROR_CODE_2,
FR_ERROR_CODE_3,
FR_ERROR_CODE_4,
FR_ERROR_CODE_5,
FR_ERROR_CODE_6,
FR_ERROR_CODE_7,
FR_ERROR_CODE_8,
FR_ERROR_CODE_9,
FR_ERROR_CODE_10,
FR_ERROR_CODE_11,
FR_ERROR_CODE_12,
FR_ERROR_CODE_14,
FR_ERROR_CODE_15,
FR_ERROR_CODE_16,
FR_ERROR_CODE_17,
FR_ERROR_CODE_30,
FR_ERROR_CODE_33,
FR_ERROR_CODE_34,
FR_ERROR_CODE_35,
FR_ERROR_CODE_36,
FR_ERROR_CODE_37,
FR_ERROR_CODE_38,
FR_ERROR_CODE_39,
FR_ERROR_CODE_3a,
FR_ERROR_CODE_3c,
FR_ERROR_CODE_3D,
FR_ERROR_CODE_3E,
FR_ERROR_CODE_3F,
FR_ERROR_CODE_40,
FR_ERROR_CODE_41,
FR_ERROR_CODE_42,
FR_ERROR_CODE_43,
FR_ERROR_CODE_44,
FR_ERROR_CODE_45,
FR_ERROR_CODE_46,
FR_ERROR_CODE_47,
FR_ERROR_CODE_48,
FR_ERROR_CODE_49,
FR_ERROR_CODE_4A,
FR_ERROR_CODE_4B,
FR_ERROR_CODE_4C,
FR_ERROR_CODE_4D,
FR_ERROR_CODE_4E,
FR_ERROR_CODE_4F,
FR_ERROR_CODE_50,
FR_ERROR_CODE_51,
FR_ERROR_CODE_52,
FR_ERROR_CODE_53,
FR_ERROR_CODE_54,
FR_ERROR_CODE_55,
FR_ERROR_CODE_56,
FR_ERROR_CODE_58,
FR_ERROR_CODE_59,
FR_ERROR_CODE_5B,
FR_ERROR_CODE_5C,
FR_ERROR_CODE_5D,
FR_ERROR_CODE_5E,
FR_ERROR_CODE_5F,
FR_ERROR_CODE_60,
FR_ERROR_CODE_61,
FR_ERROR_CODE_62,
FR_ERROR_CODE_63,
FR_ERROR_CODE_65,
FR_ERROR_CODE_66,
FR_ERROR_CODE_68,
FR_ERROR_CODE_69,
FR_ERROR_CODE_6A,
FR_ERROR_CODE_6B,
FR_ERROR_CODE_6C,
FR_ERROR_CODE_6D,
FR_ERROR_CODE_6E,
FR_ERROR_CODE_6F,
FR_ERROR_CODE_72,
FR_ERROR_CODE_73,
FR_ERROR_CODE_74,
FR_ERROR_CODE_75,
FR_ERROR_CODE_77,
FR_ERROR_CODE_78,
FR_ERROR_CODE_7A,
FR_ERROR_CODE_7B,
FR_ERROR_CODE_7C,
FR_ERROR_CODE_7D,
FR_ERROR_CODE_7E,
FR_ERROR_CODE_7F,
FR_ERROR_CODE_84,
FR_ERROR_CODE_85,
FR_ERROR_CODE_86,
FR_ERROR_CODE_87,
FR_ERROR_CODE_88,
FR_ERROR_CODE_89,
FR_ERROR_CODE_8A,
FR_ERROR_CODE_8B,
FR_ERROR_CODE_8C,
FR_ERROR_CODE_8D,
FR_ERROR_CODE_8E,
FR_ERROR_CODE_90,
FR_ERROR_CODE_91,
FR_ERROR_CODE_92,
FR_ERROR_CODE_94,
FR_ERROR_CODE_C0,
FR_ERROR_CODE_C2,
FR_ERROR_CODE_C4,
FR_ERROR_CODE_C7,
FR_ERROR_CODE_C8
};
// проверка критичеких флагов ФР
@ -980,3 +996,27 @@ int GetFirstCriticalFiscalError(CPU_INT08U *err)
}
return res;
}
// îòìåíà ÷åêà
int CanselFiscalBill(void)
{
CPU_INT08U err;
FPend();
if (CheckFiscalStatus() < 0)
{
FPost();
return -100;
}
if (FiscCanselBill(DEFAULT_PASS, &err) != FISC_OK)
{
FPost();
return -101;
}
FPost();
return 0;
}

View File

@ -37,7 +37,7 @@
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>solarium</ExpandedNode><ExpandedNode>solarium/DRIVERS</ExpandedNode><ExpandedNode>solarium/DRIVERS/lcd</ExpandedNode><ExpandedNode>solarium/PROJECT</ExpandedNode><ExpandedNode>solarium/PROJECT/app</ExpandedNode><ExpandedNode>solarium/PROJECT/data</ExpandedNode><ExpandedNode>solarium/PROJECT/menu</ExpandedNode></NodeDict></Session>
<NodeDict><ExpandedNode>solarium</ExpandedNode><ExpandedNode>solarium/DRIVERS</ExpandedNode><ExpandedNode>solarium/PROJECT</ExpandedNode><ExpandedNode>solarium/PROJECT/app</ExpandedNode><ExpandedNode>solarium/PROJECT/data</ExpandedNode><ExpandedNode>solarium/PROJECT/menu</ExpandedNode><ExpandedNode>solarium/PROJECT/service</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
@ -63,14 +63,14 @@
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\version.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>110</SelStart><SelEnd>110</SelEnd></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\version.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>93</SelStart><SelEnd>93</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\app_serv.c</Filename><XPos>0</XPos><YPos>625</YPos><SelStart>23333</SelStart><SelEnd>23333</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\DRIVERS\fiscal\fiscal.h</Filename><XPos>0</XPos><YPos>360</YPos><SelStart>18127</SelStart><SelEnd>18127</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\service\fr.c</Filename><XPos>0</XPos><YPos>687</YPos><SelStart>18119</SelStart><SelEnd>18119</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\datadesc.c</Filename><XPos>0</XPos><YPos>2204</YPos><SelStart>103470</SelStart><SelEnd>103470</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\journal.h</Filename><XPos>0</XPos><YPos>54</YPos><SelStart>2473</SelStart><SelEnd>2473</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\datadesc.h</Filename><XPos>0</XPos><YPos>186</YPos><SelStart>6570</SelStart><SelEnd>6570</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menudesc.c</Filename><XPos>0</XPos><YPos>1821</YPos><SelStart>36630</SelStart><SelEnd>36630</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\fram_map.h</Filename><XPos>0</XPos><YPos>26</YPos><SelStart>706</SelStart><SelEnd>706</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\service\coin.c</Filename><XPos>0</XPos><YPos>127</YPos><SelStart>2836</SelStart><SelEnd>2836</SelEnd></Tab><ActiveTab>9</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\DRIVERS\modem\modem.c</Filename><XPos>0</XPos><YPos>478</YPos><SelStart>11401</SelStart><SelEnd>11401</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\modem_task.c</Filename><XPos>0</XPos><YPos>538</YPos><SelStart>17253</SelStart><SelEnd>17253</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\DRIVERS\modem\modem.h</Filename><XPos>0</XPos><YPos>40</YPos><SelStart>1398</SelStart><SelEnd>1398</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-051c29c8><key>iaridepm.enu1</key></Toolbar-051c29c8></Sizes></Row0></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>519</Bottom><Right>290</Right><x>-2</x><y>-2</y><xscreen>160</xscreen><yscreen>0</yscreen><sizeHorzCX>117130</sizeHorzCX><sizeHorzCY>0</sizeHorzCY><sizeVertCX>213763</sizeVertCX><sizeVertCY>718621</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>161</Bottom><Right>1368</Right><x>-2</x><y>-2</y><xscreen>1370</xscreen><yscreen>163</yscreen><sizeHorzCX>1002928</sizeHorzCX><sizeHorzCY>224828</sizeHorzCY><sizeVertCX>117130</sizeVertCX><sizeVertCY>0</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
<Top><Row0><Sizes><Toolbar-051c29c8><key>iaridepm.enu1</key></Toolbar-051c29c8></Sizes></Row0></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>482</Bottom><Right>290</Right><x>-2</x><y>-2</y><xscreen>160</xscreen><yscreen>0</yscreen><sizeHorzCX>117130</sizeHorzCX><sizeHorzCY>0</sizeHorzCY><sizeVertCX>213763</sizeVertCX><sizeVertCY>667586</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1368</Right><x>-2</x><y>-2</y><xscreen>1370</xscreen><yscreen>200</yscreen><sizeHorzCX>1002928</sizeHorzCX><sizeHorzCY>275862</sizeHorzCY><sizeVertCX>117130</sizeVertCX><sizeVertCY>0</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>

View File

@ -1115,11 +1115,11 @@
<inputs>
<tool>
<name>BICOMP</name>
<file> 228 31 92 11 15 138 80 81 154 14 148 121 88 90 177 87 153 125 22 9 171 236 25 188 227 229 187 210 191 186 202 183 84 91 221 172 234</file>
<file> 228 31 92 11 15 138 80 81 154 14 148 121 88 90 177 87 153 125 22 9 171 236 25 188 227 229 187 210 191 186 202 183 84 91 221 172 234 240</file>
</tool>
<tool>
<name>ICCARM</name>
<file> 228 31 92 11 15 95 138 80 81 154 14 148 121 88 90 177 87 153 125 22 9 171 236 25 188 227 229 187 210 191 186 202 183 84 91 221 172 234</file>
<file> 228 31 92 11 15 95 138 80 81 154 14 148 121 88 90 177 87 153 125 22 9 171 236 25 188 227 229 187 210 191 186 202 183 84 91 221 172 234 240</file>
</tool>
</inputs>
</file>