//按钮7:双向打印参数 void CSysArgMenu::OnButton7(int iEvent, unsigned char * pEventData, int iDataLen) { string strErr = "是否放入白纸打印?"; if(YesNoMsBox(strErr)==SUCCESS) { if (isPaper() != 0) { CaMsgBox::ShowMsg("打印机未检测到纸"); return; } #if (POS_TYPE != POS_APE4000RG) char chValue[256]; UINT8 i =0; for(i=0;i<10;i++) { memset(chValue, 0, sizeof(chValue)); DBG_PRINT(("i=%u", i)); PrinterIni(i); sprintf(chValue, "双向打印参数打印:航天信息蜂鸣器正常异常状态 参数%u",i); //PrintStr(chValue); //PrintChineseLine(chValue, strlen(chValue)); PrintAsciiLine(chValue, strlen(chValue)); SetLineSpace(0); sprintf(chValue, "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"); //PrintChineseLine(chValue, strlen(chValue)); PrintAsciiLine(chValue, strlen(chValue)); sprintf(chValue, "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"); //PrintChineseLine(chValue, strlen(chValue)); PrintAsciiLine(chValue, strlen(chValue)); CarriageReturn(); } ForwardNLine(FORWARD_LINES); #else BidirectionalParaTest(); ForwardNLine(FORWARD_LINES); #endif } m_EditSysArgID = SYS_BIDIRECTION_PRINT; m_pSysArgEditWin->ReFresh(); ChangeWin(SYS_ARG_EDIT_WIN); }
void CMachineInfoWin::PrintMachineInfo(int iEvent, unsigned char * pEventData, int iDataLen) { string strErr; UINT8 ret; if (isPaper() != 0) { strErr = "打印机未检测到纸"; CaMsgBox::ShowMsg(strErr); this->ReFresh(); return; } // strErr = "请确认打印机内放入白纸"; // if (MsgBox(strErr) == FAILURE) // { // this->ReFresh(); // return; // } ret = YesNoMsgBox("请放入白纸,是否打印?"); if (ret==FAILURE) { return; } //对打印结构体进行赋值 m_pMachPrnInfo = &m_machinePrnInfo; memset((void *)m_pMachPrnInfo, 0x00, sizeof(struct TMachinePrnData)); memcpy((void *)m_pMachPrnInfo->MachineNo, (void *)(g_globalArg->m_machine->m_machineNo.c_str()), g_globalArg->m_machine->m_machineNo.length()); memcpy((void *)m_pMachPrnInfo->HardVer, (void *)(g_globalArg->m_machine->m_hVer.c_str()), g_globalArg->m_machine->m_hVer.length()); memcpy((void *)m_pMachPrnInfo->SoftVer, (void *)(g_globalArg->m_machine->m_sVer.c_str()), g_globalArg->m_machine->m_sVer.length()); m_pMachPrnInfo->MakeDate = atoi(g_globalArg->m_machine->m_pDate.c_str()); if( m_IMEI != "" ) { m_pMachPrnInfo->IMEIFlag = 1; memcpy((void *)m_pMachPrnInfo->IMEI, (void *)m_IMEI.c_str(), m_IMEI.length()); } else m_pMachPrnInfo->IMEIFlag = 0; print_macinfo(m_pMachPrnInfo, 0); ChangeWin(BASIC_REPORT_MENU); }
UINT8 CMonthSaleShowWIn::PrnMonthSaleSumProc() { DBG_PRINT(("PrnMonthSaleSumProc()")); UINT8 ret; string strErr = ""; INT8 chValue[256]; memset((void*)chValue, 0, sizeof(chValue)); //白纸检查 ret = YesNoMsgBox("请放入白纸,是否打印?"); if (ret==FAILURE) { return FAILURE;//不打印 } if (isPaper() != 0) { CaMsgBox::ShowMsg("打印机未检测到纸"); return FAILURE; } UINT32 nCurDate = TDateTime::CurrentDateTime().FormatInt(YYYYMMDD); ret=CheckCurDate(nCurDate,strErr); if (ret !=SUCCESS) { CaMsgBox::ShowMsg(strErr); return FAILURE; } CaProgressBar proBar("月销售统计打印中....."); proBar.ReFresh(); //打印报表头 PrnSaleSumHead(m_iStartDate, 0, m_iEndDate, 235959, 0); MonthSaleSumHandle(); return SUCCESS; }
/*** * Find the paper in the list * First look whether the head or tail is proximately closer. * There are cases where it will not work, but it is a small improvement for a large server * Small use cases don't use this improvement */ struct paper_list_out* findPaper(int id){ struct paper_list_out* curr; bool forward; if(!hasPapers()) { return NULL; } curr = closer(id, head, tail); //Not necessarily best option: // [0,1,2,30,100] <= 30 is closer to 100 in this case. But worst O is O(n) forward = curr == head ? false : true; while(!isPaper(curr, id)){ curr = forward ? curr->next : curr->prev; if(curr == NULL) { return NULL; } } return curr; }
//----------------------------------------------------------- //打印发票存根 //----------------------------------------------------------- UINT8 PrnInvStub(CInvHead *smallInvInfo, UINT8 IfPrnChar) { DBG_ASSERT_EXIT((smallInvInfo != NULL), (" smallInvInfo == NULL!")); //判断装入纸质发票 if (isPaper() != 0) { DBG_RETURN(NO_PAPER); } //开辟打印数据结构体的内存 TPrnInvoiceInfo *pInvPrnData; pInvPrnData = &g_invPrnData;; if(pInvPrnData==NULL) { DBG_PRINT((" malloc(sizeof(pInvPrnData) error !")); DBG_RETURN(MALLOC_MEM_ERROR); } memset((void *)pInvPrnData, 0, sizeof(TPrnInvoiceInfo));//打印结构体内容清零 if (1==IfPrnChar) { pInvPrnData->PrintType = STUB_PRINT; //打印类型为存根打印 } //定长版,填充 FillPrnInvHead(pInvPrnData, smallInvInfo); FillPrnInvDetail(pInvPrnData, smallInvInfo); FillPrnInvTail(pInvPrnData, smallInvInfo); //定长版,打印 print_invoice_head(pInvPrnData); print_invoice_data_cycle(pInvPrnData, 0); print_invoice_tail(pInvPrnData); pInvPrnData = NULL; DBG_RETURN(SUCCESS); }
//--------------------------------------------------------------------------------- //处理事件 //--------------------------------------------------------------------------------- int CProductSaleWin::ProcEvent(int iEvent,unsigned char *pEventData, int iDataLen) { UINT8 ret; double ii; char *content; string code = ""; UINT32 deptNo; UINT8 IfInvSum = 0; INT32 dotNum = 0; INT32 nWin; INT32 nLen = 0; UINT8 nIndex = 0; string strErr(""); switch(iEvent) { case ENTER_KEY: m_strSuffix = ""; //判断装入纸质发票 if (isPaper() != 0) { DBG_PRINT(("没有纸质发票")); return(ErrMsgBox(NO_PAPER)); } content = (char*)(m_pInput2->m_contentBuf); ii = atof(content); m_pInput2->Clear(); ret = CashShow(ii); if (ret != SUCCEED) { return(ErrMsgBox(ret)); } ChangeTitle(); ReFresh(); if (m_IfCancel) //之前按了商品取消键 { pSaleData->NoCancelGoods(); m_IfCancel = false; m_strSuffix = ""; } DBG_PRINT(("*****工作模式******:%u", g_globalArg->pSaveTemplateInfo->workMode)); ret = pSaleData->PayByCash(IfInvSum); DBG_PRINT(("IfInvSum == %u", IfInvSum)); if ((ret == NO_GOODS)||(ret == DB_FULL)) { ErrMsgBox(ret); ChangeWin(PRODUCT_SALE_MAIN_MENU); //返回销售档主界面 return SUCCESS; } if (ret != SUCCEED) { ErrMsgBox(ret); switch(ret) { case GET_FISCAL_CODE_ERROR://取税控码失败 break; case UPDATE_INV_VOL_ERROR://写数据库失败 break; case DB_SAVE_ERROR://写数据库失败 break; case MALLOC_MEM_ERROR: break; case INV_SUM_ERROR: break; case MUST_RE_LOGIN: break; case HAVE_ROLLED: break; case NM_EXCEED_MIN: //发票金额超下限,退回到部类销售显示,等待再次结帐 case NO_PAPER: //没纸,退回到部类销售显示,等待再次结帐 DeptSaleShow(); ChangeTitle(); ReFresh(); return FAILURE; break; case INV_LIB_ERR: break; case GX_SV_NUM_EXCEED: break; case GX_SV_TIME_EXCEED: break; case GX_SV_SUM_EXCEED: break; default: return FAILURE;//留在商品销售界面 } } else { DBG_PRINT(("启动开钱箱")); MoneyBox_Open(); } if (pSaleData->m_returnOther == 1) { pSaleData->m_returnOther = 0; // ScannerRelease();//停止扫描枪扫描 // g_winNo = 3;//对应INV_MANAGE_MENU界面 nWin = INV_MANAGE_MENU; } else { // g_winNo = 2;//对应INV_MANAGE_MENU界面 nWin = PRODUCT_SALE_MAIN_MENU; } // if (1==IfInvSum) // { // InvSumShowPrn();//显示卷汇总并打印 // } // else // { ChangeWin(nWin); //返回销售档主界面 // } return SUCCESS; break; case DISCOUNT_KEY: if ((pSaleData->m_tmpGoodsNum>=(MAX_GOODS_LINE-1))&&(!m_IfCancel)) { CaMsgBox::ShowMsg("商品行数超限"); return FAILURE; } content = (char*)(m_pInput2->m_contentBuf); if (strlen(content)==0) { CaMsgBox::ShowMsg("请先输入折扣率"); return SUCCESS; } ret =is_Figure(content); if (ret != SUCCESS) { return(ErrMsgBox(INPUT_FIGURE_ERROR)); } ii = atof(content); ii = (INT32)ii;//向零取整 m_pInput2->Clear(); ret = pSaleData->Discount(ii); if (ret != SUCCESS) { return(ErrMsgBox(ret)); } ReFresh(); // CaMsgBox::ShowMsg("暂不支持此功能"); // return SUCCESS; break; case PRICE_INPUT: return(PriceInputProc()); break; case SUM_INPUT: return(SumInputProc()); break; case CLIENT_NAME_INPUT: return(ClientInputProc()); break; case FIND_KEY: return(ClientCodeInputProc()); break; case HELP_KEY: return(RemarksInputProc()); break; case CANCEL_GOODS: if (m_IfCancel)//之前按了商品取消键 { pSaleData->NoCancelGoods(); m_IfCancel = false; m_strSuffix = ""; DeptSaleShow(); } else { if (pSaleData->m_tmpGoodsNum==0)//无商品可取消 { ErrMsgBox(NO_GOODS_CANCEL); ChangeWin(PRODUCT_SALE_MAIN_MENU); return SUCCESS; } pSaleData->CancelGoods(); m_IfCancel = true; m_strSuffix = "<消>"; CancelGoodsShow(); } ChangeTitle(); ReFresh(); return SUCCESS; break; case PLUS_KEY: return(PlusProc()); break; case TOTAL_CANCEL: if (m_IfCancel)//之前按了商品取消键 { pSaleData->NoCancelGoods(); m_IfCancel = false; m_strSuffix = ""; } return(TotalCancelProc()); break; case PLU_KEY: if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) { CaMsgBox::ShowMsg("商品行数超限"); return FAILURE; } content = (char*)(m_pInput2->m_contentBuf); code = ""; nLen = GOODS_CODE_LEN - strlen(content); if (nLen > 0)//不足13位,则前补零到13位 { while(nLen > 0) { code += "0"; nLen--; } } code += content; ret = pSaleData->DeptSale(0, code); m_pInput2->Clear(); if (m_IfCancel&&(ret == NO_SUCH_GOODS))//按商品取消键后,未在发票明细中找到该商品 { ErrMsgBox(ret); pSaleData->NoCancelGoods(); m_IfCancel = false; m_strSuffix = ""; DeptSaleShow(); ChangeTitle(); ReFresh(); return SUCCESS; } if (ret != SUCCEED) { m_strSuffix = ""; return(ErrMsgBox(ret)); } //添加实现内容调整的函数 DeptSaleShow(); ChangeTitle(); ReFresh(); //切换到商品销售界面 ChangeWin(PRODUCT_SALE_WIN); return SUCCESS; break; case SHIFT_PLU_KEY: //临时输入商品名称 if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) { CaMsgBox::ShowMsg("商品行数超限"); return FAILURE; } content = (char*)(m_pInput2->m_contentBuf); ret = pSaleData->PLUSale(content, strErr); if (m_IfCancel&&(ret == NO_SUCH_GOODS))//按商品取消键后,未在发票明细中找到该商品 { ErrMsgBox(ret); pSaleData->NoCancelGoods(); m_IfCancel = false; m_strSuffix = ""; DeptSaleShow(); ChangeTitle(); ReFresh(); return SUCCESS; } if (ret != SUCCEED) { m_strSuffix = ""; if (FAILURE == ret) { CaMsgBox::ShowMsg(strErr); strErr = ""; } else { ErrMsgBox(ret); } return FAILURE; } m_pInput2->Clear(); //添加实现内容调整的函数 DeptSaleShow(); ChangeTitle(); ReFresh(); //切换到商品销售界面 ChangeWin(PRODUCT_SALE_WIN); return SUCCESS; break; // case SCANNER_EVENT_KEY: // if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) // { // CaMsgBox::ShowMsg("商品行数超限"); // ClearScannerBuf(); // return FAILURE; // } // content = (char*)ScannerCode(); // DBG_PRINT((" 扫描枪读出的PLU码:%s", content)); // code = ""; // nLen = GOODS_CODE_LEN - strlen(content); // if (nLen > 0)//不足13位,则前补零到13位 // { // while(nLen > 0) // { // code += "0"; // nLen--; // } // } // code += content; // //ret = pSaleData->PLUSale(code); // ret = pSaleData->DeptSale(0, code); // m_pInput2->Clear(); // if (m_IfCancel&&(ret == NO_SUCH_GOODS))//按商品取消键后,未在发票明细中找到该商品 // { // ErrMsgBox(ret); // ClearScannerBuf(); // pSaleData->NoCancelGoods(); // m_IfCancel = false; // m_strSuffix = ""; // DeptSaleShow(); // ChangeTitle(); // ReFresh(); // return SUCCESS; // } // if (ret != SUCCEED) // { // ErrMsgBox(ret); // ClearScannerBuf(); // return FAILURE; // } // //添加实现内容调整的函数 // DeptSaleShow(); // ChangeTitle(); // ReFresh(); // //切换到商品销售界面 // ChangeWin(PRODUCT_SALE_WIN); // return SUCCESS; // break; case CHANGE_DEPT_KEY: if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) { CaMsgBox::ShowMsg("商品行数超限"); return FAILURE; } content = (char*)(m_pInput2->m_contentBuf); if (is_Figure(content) != SUCCESS) { CaMsgBox::ShowMsg("请输入1~99区间的整数"); return FAILURE; } deptNo = atoi(content); m_pInput2->Clear(); return(DeptSaleProc(deptNo)); break; case DEPT1_KEY: if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) { CaMsgBox::ShowMsg("商品行数超限"); return FAILURE; } if (QuickSaleProc()!=SUCCESS) { return FAILURE; } return(DeptSaleProc(1)); break; case DEPT2_KEY: if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) { CaMsgBox::ShowMsg("商品行数超限"); return FAILURE; } if (QuickSaleProc()!=SUCCESS) { return FAILURE; } return(DeptSaleProc(2)); break; case DEPT3_KEY: if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) { CaMsgBox::ShowMsg("商品行数超限"); return FAILURE; } if (QuickSaleProc()!=SUCCESS) { return FAILURE; } return(DeptSaleProc(3)); break; case DEPT4_KEY: if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) { CaMsgBox::ShowMsg("商品行数超限"); return FAILURE; } if (QuickSaleProc()!=SUCCESS) { return FAILURE; } return(DeptSaleProc(4)); break; case DEPT5_KEY: if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) { CaMsgBox::ShowMsg("商品行数超限"); return FAILURE; } if (QuickSaleProc()!=SUCCESS) { return FAILURE; } return(DeptSaleProc(5)); break; case RETURN_MAIN_MENU: //return to SYSTEMMENU if (pSaleData->m_tmpGoodsNum==0) { ChangeWin(PRODUCT_SALE_MAIN_MENU); } else { CaMsgBox::ShowMsg("商品行数非零,不能返回"); } return SUCCESS; break; case GOODSREDUCT_KEY: /* if ((pSaleData->m_tmpGoodsNum>=MAX_GOODS_LINE)&&(!m_IfCancel)) { CaMsgBox::ShowMsg("商品行数超限"); return FAILURE; } GoodesReductProc();*/ CaMsgBox::ShowMsg("暂不支持此功能"); return SUCCESS; break; default: break; } return CaWindow::ProcEvent(iEvent,pEventData,iDataLen); }
void CSelfTestMenu::OnButton6(int iEvent, unsigned char * pEventData, int iDataLen) { // string strErr = "是否调整打印参数?"; string strErr = "是否放入白纸打印?"; if(YesNoMsBox(strErr)==FAILURE) { this->ReFresh(); return; } if (isPaper() != 0) { CaMsgBox::ShowMsg("打印机未检测到纸"); return; } #if (POS_TYPE != POS_APE4000RG) char chValue[256]; UINT8 i =0; for(i=0;i<10;i++) { memset(chValue, 0, sizeof(chValue)); //bidirection = i; DBG_PRINT(("i=%u", i)); DBG_PRINT(("bidirection=%u", bidirection)); PrinterIni(i); // sprintf(chValue, "双向打印参数打印:航天信息蜂鸣器正常异常状态 参数%uHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH",i); sprintf(chValue, "双向打印参数打印:航天信息蜂鸣器正常异常状态 参数%u",i); //PrintChineseLine(chValue, strlen(chValue)); PrintAsciiLine(chValue, strlen(chValue)); SetLineSpace(0); sprintf(chValue, "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"); //PrintChineseLine(chValue, strlen(chValue)); PrintAsciiLine(chValue, strlen(chValue)); sprintf(chValue, "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"); //PrintStr(chValue); //PrintChineseLine(chValue, strlen(chValue)); PrintAsciiLine(chValue, strlen(chValue)); CarriageReturn(); } ForwardNLine(FORWARD_LINES); PrinterIni(bidirection); #else BidirectionalParaTest();//双向打印参数检测功能并不改变当前设置的双向打印参数,无需再次设置 ForwardNLine(FORWARD_LINES); #endif m_pSysArgEditWin = (CSysArgEditWin *)(m_pFrame->GetWin(SYS_ARG_EDIT_WIN)); ((CSysArgMenu *)m_pFrame->GetWin(SYSTEM_ARG_MENU))->m_EditSysArgID = SYS_BIDIRECTION_PRINT; // m_pSysArgEditWin = (CSysArgEditWin *)(m_pFrame->GetWin(SYS_ARG_EDIT_WIN)); m_pSysArgEditWin->ReFresh(); ChangeWin(SYS_ARG_EDIT_WIN); // this->ReFresh(); }