//已开发票作废 UINT8 INVM_WstInv(CInvHead* pInvHead, string &strErr) { DBG_ASSERT_EXIT((pInvHead != NULL), (" pInvHead == NULL!")); INT32 ret = SUCCESS; INT8 val[256]; string strsql(""); UINT8 waste_type = 0; UINT8 tmpType = pInvHead->m_kplx; switch(pInvHead->m_kplx) { case NORMAL_INV: waste_type = WASTE_NOR;//正票可以作废,成为正废票 break; case RETURN_INV: case RET_MANUAL_INV: case RET_SPECIAL_INV: waste_type = WASTE_RET;//红票(负票)也可以作废,成为负废票 break; default: ; } UINT8 zflx= 1; //已开发票作废 ret= g_pAPIBase->MakeWasteInv_API(*g_YwXmlArg, pInvHead, zflx, strErr); if (SUCCESS != ret) { DBG_PRINT(("strErr = %s", strErr.c_str())); return FAILURE; } POWOFF_DISABLE(); //屏蔽掉电中断 //更新INV_HEAD发票类型 memset((void*)val, 0x00, sizeof(val)); sprintf(val, "where FPDM='%s' AND FPHM=%u", pInvHead->m_fpdm.c_str(), pInvHead->m_fphm); strsql = val; pInvHead->m_kplx = waste_type; pInvHead->m_kprq = pInvHead->m_zfrq; pInvHead->m_kpsj = pInvHead->m_zfsj; ret = pInvHead->Update(strsql, &(pInvHead->m_kplx), &(pInvHead->m_kprq), &(pInvHead->m_kpsj), NULL); if ( ret!= SQLITE_OK) { strErr = "更新发票信息表错误"; return FAILURE; } DBG_PRINT(("更新INV_HEAD发票类型strsql = %s", strsql.c_str())); //更新INV_DET发票类型 CInvDet pInvDet; pInvDet.m_kplx = waste_type; pInvDet.m_kprq = pInvHead->m_zfrq; pInvDet.m_kpsj = pInvHead->m_zfsj; ret = pInvDet.Update(strsql, &(pInvDet.m_kplx), &(pInvDet.m_kprq), &(pInvDet.m_kpsj), NULL); if ( ret!= SQLITE_OK) { strErr = "更新发票信息表错误"; return FAILURE; } DBG_PRINT(("更新INV_DET发票类型strsql = %s", strsql.c_str())); //删除RT_INV表中,红票对应的原发票代码和号码 DBG_PRINT(("pInvHead->m_kplx = %d", pInvHead->m_kplx));//开票类型并不从金税盘中返回 if(tmpType == RETURN_INV) { CRtInv rtInv; memset(val, 0, sizeof(val)); sprintf(val, "where FPDM = '%s' and FPHM = %u ", pInvHead->m_yfpdm.c_str(), pInvHead->m_yfphm); DBG_PRINT(("val = %s", val)); rtInv.m_filter = val; if( rtInv.Delete() != SQLITE_OK ) { DBG_PRINT(("Delete RT_INV info error")); } DBG_PRINT(("Delete RT_INV info succeed")); } POWOFF_ENABLE(); //开掉电中断 DBG_PRINT(("WstInv() SUCCESS")); return SUCCESS; }
UINT8 GetInvNo(SaleData &tmpSaleData,UINT32 &invNo) { // UINT8 status; UINT8 errorcode; CInvVol invVol; UINT8 nIfInvSum; CaProgressBar proBar(""); if (g_globalArg->m_curInvVol->m_remain == 0) { DBG_PRINT(("单卷汇总")); proBar.SetText("单卷汇总"); proBar.ReFresh(); POWOFF_DISABLE(); //屏蔽掉电中断 // if(!tmpSaleData.InvSum(nIfInvSum)) // { // DBG_PRINT(("Get volume Sum error !")); // CaMsgBox::ShowMsg("单卷汇总失败!"); // POWOFF_ENABLE(); //开掉电中断 // return FAILURE; // } POWOFF_ENABLE(); //开掉电中断 //判断卷汇总是否要滚动,若滚动,显示消息框 // if(IfInvSumRoll()!=SUCCESS) // { // return FAILURE; // } proBar.SetText("导入新发票卷"); proBar.ReFresh(); //查询可导入的发票卷 invVol.m_filter = "where USED_FLAG = 1 and OVER_FLAG = 1 order by NO limit 1"; invVol.Requery(); //查询 errorcode = invVol.LoadOneRecord(); if (errorcode != SQLITE_OK) { CaMsgBox::ShowMsg("查询可导入发票卷失败!"); return FAILURE; } //进行真正的导入操作 // InvoiceInfoPer_u invoiceInfoPerData; /**< 发票分发临时文件结构体*/ // memset((void *)&invoiceInfoPerData, 0, sizeof(InvoiceInfoPer_u)); // // //查询发票代码 // CInvcodeLink invcodeLink; // string strCode; // errorcode = invcodeLink.CodeNo2Code(strCode, invVol.m_codeNo); // DBG_PRINT(("********errocode = %u\n", errorcode)); // if (errorcode!=SUCCESS) // { // CaMsgBox::ShowMsg("查询发票代码失败!"); // return FAILURE; // } // char2bin((UINT8 *)(invoiceInfoPerData.invoice_code), (INT8 *)(strCode.c_str()), INV_TYPE_CODE_LEN); // // invoiceInfoPerData.InvStart_no = invVol.m_InvStartNo; // invoiceInfoPerData.InvEnd_no = invVol.m_InvEndNo; //导入发票卷 string strErr; // CInvoiceImport invImport; // POWOFF_DISABLE(); //屏蔽掉电中断 // // if ((invImport.ImportInvVolHandle(&invoiceInfoPerData, strErr)) != SUCCESS) // if ((invImport.ImportInvoice((UINT8 *)(invVol.m_code.c_str()), invVol.m_isno, strErr, 1)) != SUCCESS) // { // CaMsgBox::ShowMsg("发票导入失败!"); // return FAILURE; // } // //更新当前卷信息(将发票领用卷信息更新) // char sqlbuf[512]; // string sqlstr; // memset((void*)sqlbuf,0,sizeof(sqlbuf)); // // sprintf(sqlbuf,"update INV_VOL set USED_FLAG = %u where IS_NO = %u and CODE = %u",0, invVol.m_InvStartNo, invVol.m_codeNo); // sqlstr=sqlbuf; // invVol.SetSQL(sqlstr); // if (invVol.ExecuteSQL() != SQLITE_OK) // { // CaMsgBox::ShowMsg("更新当前卷信息错误!"); // return FAILURE; // } POWOFF_ENABLE();//开掉电中断 //当前卷信息赋值 // INT8 value[256]; // memset((void *)value, 0, sizeof(value)); // sprintf(value," where USED_FLAG = %u and OVER_FLAG = %u", 0 , 1); // g_globalArg->m_curInvVol->m_filter = value; // g_globalArg->m_curInvVol->Requery(); // errorcode = g_globalArg->m_curInvVol->LoadOneRecord(); // switch(errorcode) // { // case SQLITE_OK: // break; // default: // CaMsgBox::ShowMsg("读当前卷信息错误!"); // return FAILURE; // } } //计算当前发票号 invNo = g_globalArg->m_curInvVol->m_ieno + 1 - g_globalArg->m_curInvVol->m_remain; return SUCCESS; }