//--------------------------------------------------------------------- //检验发票是否可退 //--------------------------------------------------------------------- UINT8 INVM_CheckIsNoRet(CInvHead *pInvHead) { DBG_ENTER("MKINV_CheckIsNoRet"); DBG_PRINT(("进入MKINV_CheckIsNoRet函数")); DBG_PRINT(("pInvHead->m_kplx= %u",pInvHead->m_kplx)); //该票是否在本月内//debug DBG_PRINT(("pInvHead->m_kprq= %u",pInvHead->m_kprq)); INT32 nReturn = CmpCurMonth(pInvHead->m_kprq, pInvHead->m_kpsj); DBG_PRINT(("nReturn= %d",nReturn)); if (0 == nReturn) { DBG_PRINT(("本月发票,不得冲红%d", nReturn)); // DBG_RETURN(BX_RET_MONTH_ERR); } INT8 value[256]; memset((void*)value, 0, sizeof(value)); INT32 errorcode; sprintf(value,"where FPDM = '%s' and FPHM = %u",pInvHead->m_fpdm.c_str(), pInvHead->m_fphm); //若为已退发票,返回 CRtInv rtInv; rtInv.m_filter = value; //查询 rtInv.Requery(); DBG_PRINT(("pInvHead->m_bzkz = %s", pInvHead->m_bzkz.c_str())); if ((rtInv.LoadOneRecord() == SQLITE_OK)||("1" == pInvHead->m_bzkz)) { DBG_PRINT((" This invoice already has returned invoice!")); DBG_RETURN(HAVE_RT_INV); } //若为红票,返回 if ((pInvHead->m_kplx == RETURN_INV)||(pInvHead->m_kplx == RET_MANUAL_INV)|| (pInvHead->m_kplx == RET_SPECIAL_INV)) { DBG_RETURN(RT_INV); } //若为废票,返回 if( (pInvHead->m_kplx == WASTE_INV) || (pInvHead->m_kplx == WASTE_NOR) || (pInvHead->m_kplx == WASTE_RET)) { DBG_RETURN(WT_INV); } //不能开红票,返回 DBG_PRINT(("pInvHead->m_hczt = %s", pInvHead->m_hczt.c_str())); if ( "1" == pInvHead->m_hczt) { g_globalArg->m_strMsg =pInvHead->m_backup2; DBG_RETURN(INV_LIB_ERR); } DBG_PRINT(("退出CheckInvReturn函数")); DBG_RETURN(SUCCESS); }
UINT8 CGInvLabelWin::CheckCancelValid(void) { CInvHead *pInvHead = m_pLInvHead; char val[256]; INT32 errorcode; memset((void*)val, 0, sizeof(val)); //若为废票,返回 if( (WASTE_INV == pInvHead->m_kplx) || (WASTE_NOR == pInvHead->m_kplx) || (WASTE_RET == pInvHead->m_kplx) ) { CaMsgBox::ShowMsg("不能作废废票"); return FAILURE; } //若为已退发票,返回 memset((void*)val, 0, sizeof(val)); sprintf(val,"where FPDM = '%s' and FPHM = %u",pInvHead->m_fpdm.c_str(), pInvHead->m_fphm); DBG_PRINT(("val = %s", val)); CRtInv rtInv; rtInv.m_filter = val; rtInv.Requery(); DBG_PRINT(("m_pInvHead->m_bzkz = %s", pInvHead->m_bzkz.c_str())); if (rtInv.LoadOneRecord() == SQLITE_OK)//一张正票已被冲红则不能作废,但相应的红票可以作废 { CaMsgBox::ShowMsg("该票已开红票"); return FAILURE; } return SUCCESS; }
INT32 CJSKMakeInvoice::MakeInvAuthority(CInvHead *pInvHead, string& strErr) { INT32 retcode = JSK_SUCCESS; INT8 tmpBuff[32]; UINT8 sDecBuff[MAX_DATETIME_LEN+1]; INT8 sqlbuf[128]; INT32 errcode = 0; memset(sqlbuf, 0, sizeof(sqlbuf)); UINT32 uCurDate = 0; UINT32 uCurTime = 0; uCurDate = pInvHead->m_kprq; uCurTime = pInvHead->m_kpsj; DBG_PRINT(("uCurDate = %u", uCurDate)); DBG_PRINT(("uCurTime = %u", uCurTime)); switch(pInvHead->m_kplx) { case JSK_NORMAL_INV: // { // //离线锁死日(判断当前时间是否超过离线锁死日) // // //离线开票限定时长(当前时间与第一张未上传的发票时间比对) // CInvServ invServ; // invServ.Requery(); // if(invServ.LoadOneRecord() == SQLITE_OK) // { // DBG_PRINT(("invServ.m_issueDate = %u", invServ.m_issueDate)); // DBG_PRINT(("invServ.m_issueTime = %u", invServ.m_issueTime)); // DBG_PRINT(("g_globalArgLib->m_invKind->m_Lxkjsj = %u", g_globalArgLib->m_invKind->m_Lxkjsj)); // TDateTime upDateTime(invServ.m_issueDate, invServ.m_issueTime); // upDateTime = upDateTime.HourAdd(upDateTime, g_globalArgLib->m_invKind->m_Lxkjsj); // DBG_PRINT(("upDateTime = %s", upDateTime.FormatString(YYYYMMDDHHMMSS).c_str())); // DBG_PRINT(("curDateTime = %s", curDateTime.FormatString(YYYYMMDDHHMMSS).c_str())); // if(curDateTime >= upDateTime) // { // strErr = "离线开具限定时长超限!"; // return JSK_FAILURE; // } // } // // //离线开票限定正数累计金额 // if(nSum + g_globalArgLib->m_InvServSum > g_globalArgLib->m_invKind->m_maxSum) // { // strErr = "离线累计金额超限!"; // return JSK_FAILURE; // } // } break; case JSK_RETURN_INV: { sprintf(sqlbuf, "where FPDM='%s' and FPHM=%u", pInvHead->m_yfpdm.c_str(), pInvHead->m_yfphm); DBG_PRINT(("sqlbuf = %s", sqlbuf)); CRtInv tmpRtInv; tmpRtInv.m_filter.append(sqlbuf); tmpRtInv.Requery(); errcode = tmpRtInv.LoadOneRecord(); if(errcode == SQLITE_OK) { retcode = JSK_COMMON_ERR_NO; strErr = "已开过负票,不能再次开具!"; return retcode; } memset(sDecBuff, 0, sizeof(sDecBuff)); retcode = CJSKInfoFunc::GetJSPSendTime(sDecBuff, strErr); if( retcode != JSK_SUCCESS ) { return retcode; } TDateTime sDecDate((INT8 *)sDecBuff, DATETIME_POS); CInvHead tmpInvHead; tmpInvHead.m_filter.append(sqlbuf); tmpInvHead.Requery(); errcode = tmpInvHead.LoadOneRecord(); if(errcode != SQLITE_OK) { tmpInvHead.m_fpdm = pInvHead->m_yfpdm; tmpInvHead.m_fphm = pInvHead->m_yfphm; retcode = CJSKInfoFunc::GetInvDetailInfoNO(&tmpInvHead, strErr); if(retcode != JSK_SUCCESS) { return retcode; } if(tmpInvHead.Save() != SUCCESS) { DBG_PRINT(("InvHead Save Error!")); } } if(tmpInvHead.m_kplx != JSK_NORMAL_INV) { retcode = JSK_COMMON_ERR_NO; strErr = "原发票非正数发票,不能开具负票!"; return retcode; } if(tmpInvHead.m_kphjje != pInvHead->m_kphjje) { retcode = JSK_COMMON_ERR_NO; strErr = "负票金额与原发票不一致!"; return retcode; } // TDateTime invDate(tmpInvHead.m_kprq, tmpInvHead.m_kpsj); // DBG_PRINT(("invDate = %s", invDate.FormatString(YYYYMMDDHHMMSS).c_str())); // DBG_PRINT(("sDecDate = %s", sDecDate.FormatString(YYYYMMDDHHMMSS).c_str())); // if(invDate >= sDecDate) // { // retcode = JSK_COMMON_ERR_NO; // strErr = "原发票未抄报,不能开具负票!"; // return retcode; // } } break; case JSK_WASTE_INV: break; case JSK_WASTE_NOR: case JSK_WASTE_RET: { memset(sDecBuff, 0, sizeof(sDecBuff)); retcode = CJSKInfoFunc::GetJSPSendTime(sDecBuff, strErr); if( retcode != JSK_SUCCESS ) { return retcode; } TDateTime sDecDate((INT8 *)sDecBuff, DATETIME_POS); memset(sDecBuff, 0, sizeof(sDecBuff)); sprintf((INT8 *)sDecBuff, "%08u%06u", pInvHead->m_kprq, pInvHead->m_kpsj); TDateTime invDate((INT8 *)sDecBuff, DATETIME_POS); if(invDate < sDecDate) { retcode = JSK_COMMON_ERR_NO; strErr = "原发票已抄报,不能作废"; return retcode; } } break; default: break; } return JSK_SUCCESS; }