This commit is contained in:
dimoniche 2019-07-09 01:28:00 +03:00
parent 864b5670bf
commit 8343c6d7cc
11 changed files with 197 additions and 54 deletions

View File

@ -366,7 +366,7 @@ void UserAppTask(void *p_arg)
SetAcceptedBankMoney(accmoney, number_post);
money_timestamp[number_post] = OSTimeGet();
if (money) SaveEventRecord(number_post, JOURNAL_EVENT_MONEY_NOTE_POST1 + number_post, money);
if (money) SaveEventRecord(number_post, JOURNAL_EVENT_MONEY_BANK_POST1 + number_post, money);
wash_State[number_post] = insertMoney;
}
@ -488,6 +488,9 @@ void UserAppTask(void *p_arg)
case EVENT_CASH_PRINT_CHECK_POST6:
case EVENT_CASH_PRINT_CHECK_VACUUM1:
case EVENT_CASH_PRINT_CHECK_VACUUM2:
if (was_critical_error) break;
if (GetMode() == MODE_WORK) // ïå÷àòàåì òîëüêî â ðàáî÷åì ðåæèìå
{
int number_post = event - EVENT_CASH_PRINT_CHECK_POST1;
@ -503,7 +506,7 @@ void UserAppTask(void *p_arg)
// íàïå÷àòàåì íàëè÷íûé ÷åê
if (IsFiscalConnected())
{
if (PrintFiscalBill(accmoney,number_post) == 0) // çäåñü äîáàâèòü ñ êàêîãî ïîñòà ÷åê
if (PrintFiscalBill(accmoney, number_post, 0) == 0) // çäåñü äîáàâèòü ñ êàêîãî ïîñòà ÷åê
{
SaveEventRecord(number_post, JOURNAL_EVENT_PRINT_BILL_POST1 + number_post, GetTimeSec());
}
@ -535,14 +538,14 @@ void UserAppTask(void *p_arg)
// íàïå÷àòàåì áåçíàëè÷íûé ÷åê
if (IsFiscalConnected())
{
if (PrintFiscalBill(accmoney,number_post) == 0) // çäåñü äîáàâèòü ñ êàêîãî ïîñòà ÷åê
if (PrintFiscalBill(accmoney,number_post, 1) == 0) // çäåñü äîáàâèòü ñ êàêîãî ïîñòà ÷åê
{
SaveEventRecord(number_post, JOURNAL_EVENT_PRINT_BILL_POST1 + number_post, GetTimeSec());
SaveEventRecord(number_post, JOURNAL_EVENT_PRINT_BILL_ONLINE_POST1 + number_post, GetTimeSec());
}
}
IncCounter(number_post, ChannelsPayedTime[number_post], accmoney);
SetAcceptedMoney(0, number_post);
SetAcceptedBankMoney(0, number_post);
OSTimeDly(1000);
// ïîâåñèì ìåíþ "ÑÏÀÑÈÁÎ"
@ -560,7 +563,7 @@ void UserAppTask(void *p_arg)
case EVENT_KEY_F1:
testMoney = 100;
PostUserEvent(EVENT_COIN_INSERTED_VACUUM1);
PostUserEvent(EVENT_BANK_INSERTED_POST1);
/*FIO4SET_bit.P4_28 = 1;
OSTimeDly(50);
@ -583,10 +586,11 @@ void UserAppTask(void *p_arg)
FIO4CLR_bit.P4_28 = 1;*/
break;
case EVENT_KEY_F2:
//PostUserEvent(EVENT_STOP_MONEY_POST1);
PostUserEvent(EVENT_WAIT_CASH_PRINT_CHECK_POST1);
break;
case EVENT_KEY_F3:
//PostUserEvent(EVENT_WAIT_CASH_PRINT_CHECK_POST1);
testMoney = 100;
PostUserEvent(EVENT_CASH_INSERTED_POST1);
break;
#endif
default:
@ -702,7 +706,7 @@ void UserPrintMoneyMenu(int post)
}
else if(wash_State[post] == insertMoney)
{
accmoney = GetAcceptedMoney(post);
accmoney = GetAcceptedMoney(post) + GetAcceptedBankMoney(post);
sprintf(buf, " Âíåñèòå äåíüãè");
PrintUserMenuStr(buf, 1);

View File

@ -144,7 +144,26 @@ void GetEventStr(char* str, char event)
case JOURNAL_EVENT_MONEY_NOTE_POST6:
sprintf(str, "Âí.êóïþðà ïîñò 6");
break;
case JOURNAL_EVENT_MONEY_BANK_POST1:
sprintf(str, "Ýë.ïëàòåæ ïîñò 1");
break;
case JOURNAL_EVENT_MONEY_BANK_POST2:
sprintf(str, "Ýë.ïëàòåæ ïîñò 2");
break;
case JOURNAL_EVENT_MONEY_BANK_POST3:
sprintf(str, "Ýë.ïëàòåæ ïîñò 3");
break;
case JOURNAL_EVENT_MONEY_BANK_POST4:
sprintf(str, "Ýë.ïëàòåæ ïîñò 4");
break;
case JOURNAL_EVENT_MONEY_BANK_POST5:
sprintf(str, "Ýë.ïëàòåæ ïîñò 5");
break;
case JOURNAL_EVENT_MONEY_BANK_POST6:
sprintf(str, "Ýë.ïëàòåæ ïîñò 6");
break;
case JOURNAL_EVENT_MONEY_COIN_POST1:
sprintf(str, "Âí.ìîíåòû ïîñò 1");
break;
@ -204,7 +223,26 @@ void GetEventStr(char* str, char event)
case JOURNAL_EVENT_PRINT_BILL_VACUUM2:
sprintf(str, "Ïå÷àòü ÷åêà ïûë.2");
break;
case JOURNAL_EVENT_PRINT_BILL_ONLINE_POST1:
sprintf(str, "Ïå÷.online ÷åêà ïîñò 1");
break;
case JOURNAL_EVENT_PRINT_BILL_ONLINE_POST2:
sprintf(str, "Ïå÷. online ÷åêà ïîñò 2");
break;
case JOURNAL_EVENT_PRINT_BILL_ONLINE_POST3:
sprintf(str, "Ïå÷.online ÷åêà ïîñò 3");
break;
case JOURNAL_EVENT_PRINT_BILL_ONLINE_POST4:
sprintf(str, "Ïå÷.online ÷åêà ïîñò 4");
break;
case JOURNAL_EVENT_PRINT_BILL_ONLINE_POST5:
sprintf(str, "Ïå÷.online ÷åêà ïîñò 5");
break;
case JOURNAL_EVENT_PRINT_BILL_ONLINE_POST6:
sprintf(str, "Ïå÷.online ÷åêà ïîñò 6");
break;
case JOURNAL_EVENT_PRINT_Z:
sprintf(str, "Ïå÷àòü îò÷åòà î çàêð.ñì.");
break;
@ -365,6 +403,10 @@ void PrintEventJournalRecordEng(char* str, TEventRecord *record)
{
sprintf(&str[strlen(str)], "%d rub.", record->data);
}
else if ((record->event >= JOURNAL_EVENT_MONEY_BANK_POST1) && (record->event <= JOURNAL_EVENT_MONEY_BANK_POST6))
{
sprintf(&str[strlen(str)], "%d rub.", record->data);
}
else if (record->event == JOURNAL_EVENT_START_SESSION)
{
sprintf(&str[strlen(str)], "");
@ -379,7 +421,11 @@ void PrintEventJournalRecordEng(char* str, TEventRecord *record)
{
sprintf(&str[strlen(str)], "");
}
if ((record->event >= JOURNAL_EVENT_PRINT_BILL_POST1) && (record->event <= JOURNAL_EVENT_PRINT_BILL_VACUUM2))
else if ((record->event >= JOURNAL_EVENT_PRINT_BILL_POST1) && (record->event <= JOURNAL_EVENT_PRINT_BILL_VACUUM2))
{
sprintf(&str[strlen(str)], " ");
}
else if ((record->event >= JOURNAL_EVENT_PRINT_BILL_ONLINE_POST1) && (record->event <= JOURNAL_EVENT_PRINT_BILL_ONLINE_POST1))
{
sprintf(&str[strlen(str)], " ");
}

View File

@ -44,20 +44,34 @@ typedef struct{
#define JOURNAL_EVENT_PRINT_BILL_VACUUM1 25 // ïå÷àòü ÷åêà ïûëåñîñ 1
#define JOURNAL_EVENT_PRINT_BILL_VACUUM2 26 // ïå÷àòü ÷åêà ïûëåñîñ 2
#define JOURNAL_EVENT_PRINT_Z 27 // ïå÷àòü z-îò÷åòà
#define JOURNAL_EVENT_PRINT_X 28 // ïå÷àòü x-îò÷åòà
#define JOURNAL_EVENT_PRINT_BUF 29 // ïå÷àòü x-îò÷åòà
#define JOURNAL_EVENT_CHANGE_MODE 30 // ñìåíà ðåæèìà
#define JOURNAL_EVENT_INCASSATION 31 // èíêàññàöèÿ
#define JOURNAL_EVENT_PASS_FAIL 32 // íåâåðíûé ââîä ïàðîëÿ
#define JOURNAL_EVENT_EMAIL_OK 33 // ïðàâèëüíî îòïðàâëåí email
#define JOURNAL_EVENT_EMAIL_FAIL 34 // îøèáêà ïðè îòïðàâêå email
#define JOURNAL_EVENT_MONEY_BANK_POST1 27 // ñîáûòèå ïîëó÷åíèÿ äåíåã ñ êàðòû ïîñò 1
#define JOURNAL_EVENT_MONEY_BANK_POST2 28 // ñîáûòèå ïîëó÷åíèÿ äåíåã ñ êàðòû ïîñò 2
#define JOURNAL_EVENT_MONEY_BANK_POST3 29 // ñîáûòèå ïîëó÷åíèÿ äåíåã ñ êàðòû ïîñò 3
#define JOURNAL_EVENT_MONEY_BANK_POST4 30 // ñîáûòèå ïîëó÷åíèÿ äåíåã ñ êàðòû ïîñò 4
#define JOURNAL_EVENT_MONEY_BANK_POST5 31 // ñîáûòèå ïîëó÷åíèÿ äåíåã ñ êàðòû ïîñò 5
#define JOURNAL_EVENT_MONEY_BANK_POST6 32 // ñîáûòèå ïîëó÷åíèÿ äåíåã ñ êàðòû ïîñò 6
#define JOURNAL_EVENT_PRINT_BILL_ONLINE_POST1 33 // ïå÷àòü ÷åêà ïîñò 1
#define JOURNAL_EVENT_PRINT_BILL_ONLINE_POST2 34 // ïå÷àòü ÷åêà ïîñò 2
#define JOURNAL_EVENT_PRINT_BILL_ONLINE_POST3 35 // ïå÷àòü ÷åêà ïîñò 3
#define JOURNAL_EVENT_PRINT_BILL_ONLINE_POST4 36 // ïå÷àòü ÷åêà ïîñò 4
#define JOURNAL_EVENT_PRINT_BILL_ONLINE_POST5 37 // ïå÷àòü ÷åêà ïîñò 5
#define JOURNAL_EVENT_PRINT_BILL_ONLINE_POST6 38 // ïå÷àòü ÷åêà ïîñò 6
#define JOURNAL_EVENT_PRINT_Z 39 // ïå÷àòü z-îò÷åòà
#define JOURNAL_EVENT_PRINT_X 40 // ïå÷àòü x-îò÷åòà
#define JOURNAL_EVENT_PRINT_BUF 41 // ïå÷àòü x-îò÷åòà
#define JOURNAL_EVENT_CHANGE_MODE 42 // ñìåíà ðåæèìà
#define JOURNAL_EVENT_INCASSATION 43 // èíêàññàöèÿ
#define JOURNAL_EVENT_PASS_FAIL 44 // íåâåðíûé ââîä ïàðîëÿ
#define JOURNAL_EVENT_EMAIL_OK 45 // ïðàâèëüíî îòïðàâëåí email
#define JOURNAL_EVENT_EMAIL_FAIL 46 // îøèáêà ïðè îòïðàâêå email
// îøèáêà ñâÿçè ñ ôèñêàëüíèêîì
#define ERROR_FR_CONN 35
#define ERROR_FR_CONN 47
// ÂÑÅ ÎØÈÁÊÈ ÔÐ ÔÀÒÀËÜÍÛÅ
#define ERROR_FR 36
#define ERROR_FR 48
#define JOURNAL_EVENTS_COUNT (ERROR_FR+FR_ERROR_NUMBER) // ÷èñëî ñîáûòèé

View File

@ -1169,6 +1169,10 @@ CPU_INT08U const *ErrorNumberList0[JOURNAL_EVENTS_COUNT] =
"", "", "", "",
"", "", "", "", "", "", "",
"", "", "", "",
"", "", "", "",
"", "", "", "",
"ФР:01h-Неизвестная",
"ФР:02h-Неверное",
"ФР:03h-Ошибка ФН",
@ -1314,6 +1318,10 @@ CPU_INT08U const *ErrorNumberList1[JOURNAL_EVENTS_COUNT] =
"", "", "", "",
"", "", "", "", "", "", "",
"", "", "", "",
"", "", "", "",
"", "", "", "",
"команда", // ФР:01h
"состояние ФН",
"",

View File

@ -884,6 +884,44 @@ int FiscCloseBillV2(CPU_INT32U pass, CPU_INT64U *cash, CPU_INT08U taxsys, char*
return FISC_OK;
}
int FiscCloseBillV2Online(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], 0, 5);
memcpy(&fisc_buf[10], cash, 5); // online ïëàòåæ
memset(&fisc_buf[15], 0, 70);
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)
{

View File

@ -360,5 +360,6 @@ 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 FiscCloseBillV2Online(CPU_INT32U pass, CPU_INT64U *cash, CPU_INT08U taxsys, char* text, CPU_INT08U* err);
#endif //#ifndef _FISCAL_H_

View File

@ -1553,6 +1553,10 @@ void PrintEventJournalRecord(TEventRecord *record)
{
sprintf(str_EventData, "%d ðóá.ïîñò %d", record->data, record->event%6);
}
else if ((record->event >= JOURNAL_EVENT_MONEY_BANK_POST1) && (record->event <= JOURNAL_EVENT_MONEY_BANK_POST6))
{
sprintf(str_EventData, "%d ðóá.ïîñò %d", record->data, record->event%6);
}
else if (record->event == JOURNAL_EVENT_START_SESSION)
{
sprintf(&str_EventNumber[strlen(str_EventNumber)], "");
@ -1571,6 +1575,10 @@ void PrintEventJournalRecord(TEventRecord *record)
{
sprintf(str_EventData, " ");
}
else if ((record->event >= JOURNAL_EVENT_PRINT_BILL_ONLINE_POST1) && (record->event <= JOURNAL_EVENT_PRINT_BILL_ONLINE_POST1))
{
sprintf(str_EventData, " ");
}
else if (record->event == JOURNAL_EVENT_PRINT_Z)
{
sprintf(str_EventData, "");

View File

@ -624,7 +624,7 @@ void ClrFiscalErrorByCode(CPU_INT08U err)
// ïå÷àòü ÷åêà íà ÔÐ
// ext - ðàñøèðåííûé ôîðìàò êîìàíäû (Îïåðàöèÿ V2 ðàñøèðåííîå çàêðûòèå ÷åêà)
int PrintFiscalBill(CPU_INT32U money, CPU_INT32U post)
int PrintFiscalBill(CPU_INT32U money, CPU_INT32U post, CPU_INT32U online)
{
CPU_INT08U err;
CPU_INT64U count = 1000;
@ -877,28 +877,54 @@ repeat_close:
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(online)
{
if (err)
{
SetFiscalErrorByCode(err);
}
else
{
// íåò ñîåäèíåíèÿ
ClearFiscalErrors();
FiscalConnState = FISCAL_NOCONN;
SetErrorFlag(ERROR_FR_CONN);
}
if (repeat)
{
FPost();
return -4;
}
repeat++;
if(((ext) && (FiscCloseBillV2Online(DEFAULT_PASS, &cash, tax[0], "Ñïàñèáî çà ïîêóïêó!!!", &err) != FISC_OK)))
{
if (err)
{
SetFiscalErrorByCode(err);
}
else
{
// íåò ñîåäèíåíèÿ
ClearFiscalErrors();
FiscalConnState = FISCAL_NOCONN;
SetErrorFlag(ERROR_FR_CONN);
}
if (repeat)
{
FPost();
return -4;
}
repeat++;
}
}
else
{
if (((ext == 0) && (FiscCloseBill(DEFAULT_PASS, &cash, &tax[0], "Ñïàñèáî çà ïîêóïêó!!!", &err) != FISC_OK))
|| ((ext) && (FiscCloseBillV2(DEFAULT_PASS, &cash, tax[0], "Ñïàñèáî çà ïîêóïêó!!!", &err) != FISC_OK))
)
{
if (err)
{
SetFiscalErrorByCode(err);
}
else
{
// íåò ñîåäèíåíèÿ
ClearFiscalErrors();
FiscalConnState = FISCAL_NOCONN;
SetErrorFlag(ERROR_FR_CONN);
}
if (repeat)
{
FPost();
return -4;
}
repeat++;
}
}
if (repeat)

View File

@ -14,7 +14,7 @@ extern void InitFiscal(void);
extern int IsFiscalConnected(void);
extern void FPend(void);
extern void FPost(void);
extern int PrintFiscalBill(CPU_INT32U money, CPU_INT32U post);
extern int PrintFiscalBill(CPU_INT32U money, CPU_INT32U post, CPU_INT32U online);
extern int PrintFiscalBillRepeated(CPU_INT32U money, CPU_INT32U time);
extern void SetFiscalErrorByCode(CPU_INT08U err);
extern void ClearFiscalErrors(void);

View File

@ -14,7 +14,7 @@ Count=0
Enabled=0
ShowSource=1
[DebugChecksum]
Checksum=1092686877
Checksum=1408088267
[Exceptions]
StopOnUncaught=_ 0
StopOnThrow=_ 0
@ -155,9 +155,7 @@ Fmt0={W}0:curr_input 4 0
[Disassemble mode]
mode=0
[Breakpoints2]
Bp0=_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\app\app_serv.c}.258.27" 0 0 1 "" 0 "" 0
Bp1=_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\app\app_serv.c}.493.19" 0 0 1 "" 0 "" 0
Count=2
Count=0
[Log file]
LoggingEnabled=_ 0
LogFile=_ ""

File diff suppressed because one or more lines are too long