//----------------------------------------------------- //存储内容到数据库(INV_HEAD和INV_DET表) //----------------------------------------------------- INT32 CInvHead::Save() { DBG_PRINT(("进入Save函数")); DBG_ENTER("CInvHead::Save"); INT32 errcode; //添加INV_HEAD记录 errcode = AddNew(); //printf("512errcode= %d \n",errcode); if (errcode != SQLITE_OK) { DBG_PRINT(("INV_HEAD AddNew() wrong")); DBG_RETURN(FAILURE); } //printf("pHead= %x \n",pHead); //添加INV_DET记录 CInvDet *p = pHead; if (p==NULL) { //printf("523 INV_DET here \n"); DBG_PRINT(("INV_DET here")); DBG_ASSERT_WARNING(false,("List pointer: pHead = NULL!")); } while (p) { p->m_fpdm = m_fpdm; p->m_fphm = m_fphm; p->m_kplx = m_kplx; p->m_kprq = m_kprq; p->m_kpsj = m_kpsj; p->m_sky = m_sky; //printf("529INV_DET here \n"); DBG_PRINT(("INV_DET here")); DBG_PRINT(("p->m_fphm = %u", p->m_fphm)); DBG_PRINT(("p->m_spdj = %f", p->m_spdj)); errcode = p->AddNew(); //printf("534errcode= %d \n",errcode); if (errcode != SQLITE_OK) { DBG_PRINT(("INV_DET AddNew() wrong")); DBG_RETURN(FAILURE); } p = p->pNext; DBG_PRINT(("INV_DET AddNew()")); } //printf("退出Save函数 \n"); DBG_PRINT(("退出Save函数")); DBG_RETURN(SUCCESS); }
//------------------------------------------------- //删除链表,释放链表空间 //------------------------------------------------- INT32 CInvHead::DelList() { DBG_PRINT(("进入DelList函数")); DBG_ENTER("CInvHead::DelList"); CInvDet *p = pHead; CInvDet *s; while (p) { DBG_PRINT(("delete CInvDet: DP_NO = %s!", p->m_spbm.c_str())); s = p; p = p->pNext; //delete s; s->FreeInvDet();//释放该节点所占空间 } pHead = NULL; pEnd = NULL; DBG_PRINT(("退出DelList函数")); DBG_RETURN(SUCCESS); }
//按发票号码查询发票明细 UINT8 INVM_InvDetailNOQuery(string invCode,UINT32 invNO,UINT8 uFlag) { INT32 Ret=SUCCESS; string strsql(""); string strErr=""; string strBar=""; INT32 ret=0; //发票明细查询 CInvHead Invhead; UINT32 invNum=0;//发票张数 UINT8 cxfs=0; //0:按发票号码段查询 string cxtj(""); // cxfs为0时:12发票代码+8位起始号码+8位终止号码 cxtj =invCode; INT8 tmpChar[16]; memset((void *)tmpChar,0x00,sizeof(tmpChar)); sprintf(tmpChar,"%08u",invNO); cxtj.append(tmpChar); cxtj.append(tmpChar); DBG_PRINT(("cxtj= %s",cxtj.c_str())); if (uFlag ==0) { strBar="发票信息查询中....."; } else { strBar="发票信息补传中....."; } CaProgressBar proBar(strBar.c_str()); proBar.ReFresh(); Ret=g_pAPIBase->GetInvHeadInfo_API(*g_YwXmlArg, cxfs, cxtj, invNum, &Invhead, strErr); DBG_PRINT(("Ret= %d",Ret)); if (Ret !=SUCCESS) { CaMsgBox::ShowMsg(strErr); return FAILURE; } if (uFlag ==1) { CaMsgBox::ShowMsg("发票信息等待上传!"); g_globalArg->m_pthreadFlag = 1; return SUCCESS; } //从盘上获取的明细编码为空,则置为 "0000000000000",便于报表统计 CInvDet *p = Invhead.pHead; while (p) { DBG_PRINT(("p->m_spbm = %u", p->m_spbm.c_str())); if ("" == p->m_spbm) { p->m_spbm = "0000000000000"; } p = p->pNext; DBG_PRINT(("INV_DET AddNew()")); } //查看本地是否有该发票信息 CInvHead invheadtmp; INT8 sqlbuf[128]; memset(sqlbuf, 0x00, sizeof(sqlbuf)); sprintf(sqlbuf, "where FPDM = '%s' and FPHM = %u", invCode.c_str(), invNO); invheadtmp.m_filter = sqlbuf; invheadtmp.Requery(); if (invheadtmp.LoadOneRecord() == SQLITE_OK) { //判断本地数据库的数据类型是否与转换器一致 DBG_PRINT(("invheadtmp.m_kplx= %u",invheadtmp.m_kplx)); DBG_PRINT(("Invhead.m_kplx= %u",Invhead.m_kplx)); if (invheadtmp.m_kplx != Invhead.m_kplx ) { strsql = sqlbuf; invheadtmp.m_kplx = Invhead.m_kplx; ret = invheadtmp.Update(strsql, &(invheadtmp.m_kplx), NULL); DBG_PRINT(("ret= %d",ret)); if ( ret!= SQLITE_OK) { CaMsgBox::ShowMsg("更新发票头信息表错误"); return FAILURE; } //更新INV_DET发票类型 CInvDet invDet; invDet.m_kplx =invheadtmp.m_kplx; ret = invDet.Update(strsql, &(invDet.m_kplx), NULL); DBG_PRINT(("ret= %d",ret)); if ( ret!= SQLITE_OK) { CaMsgBox::ShowMsg("更新发票明细信息表错误"); return FAILURE; } } } else { //发票信息保存 if (SUCCESS != Invhead.Save()) { CaMsgBox::ShowMsg("查询发票存储失败!"); return FAILURE; } DBG_PRINT(("Invhead.m_kplx= %u",Invhead.m_kplx)); if(Invhead.m_kplx == RETURN_INV) { CRtInv rtInv; rtInv.m_fpdm =Invhead.m_yfpdm; rtInv.m_fphm =Invhead.m_yfphm; ret = rtInv.AddNew(); //写已退发票信息表 DBG_PRINT(("ret= %d",ret)); // if ( ret!= SQLITE_OK) // { // CaMsgBox::ShowMsg("查询红票,存储蓝票信息表错误"); // return FAILURE; // } } } CaMsgBox::ShowMsg("查询发票成功"); return SUCCESS; }
//已开发票作废 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; }
INT32 CInvHead::Load() { DBG_ENTER("CInvHead::Load"); DBG_PRINT(("进入CInvHead::Load函数")); //释放链表所占空间 DelList(); //查询INV_HEAD表 CTable::Requery(); INT32 returnVal = LoadOneRecord(); if (returnVal == SQLITE_OK) { DBG_PRINT(("NO, %d", m_no)); DBG_PRINT(("m_fpdm, %s", m_fpdm.c_str())); DBG_PRINT(("m_fphm, %d", m_fphm)); DBG_PRINT(("m_kprq, %lu", m_kprq)); DBG_PRINT(("m_kpsj, %lu", m_kpsj)); DBG_PRINT(("m_kplx, %d", m_kplx)); DBG_PRINT(("m_kphjje, %lld", m_kphjje)); DBG_PRINT(("m_yfphm, %d", m_yfphm)); DBG_PRINT(("m_fkdw, %s", m_fkdw.c_str())); DBG_PRINT(("m_payerCode, %s", m_payerCode.c_str())); DBG_PRINT(("m_sky, %s", m_sky.c_str())); // DBG_PRINT(("m_skyid, %u", m_skyid)); DBG_PRINT(("m_fwm, %s", m_fwm.c_str())); // DBG_PRINT(("m_ptype, %d", m_ptype)); //DBG_NPRINT_HEX(m_fCode, 8); DBG_PRINT(("m_sphsl, %d", m_sphsl)); DBG_PRINT(("BACKUP1, %s", m_backup1.c_str())); // DBG_PRINT(("BACKUP2, %s", m_backup2.c_str())); // DBG_PRINT(("BACKUP3, %s", m_backup3.c_str())); } else if (returnVal == SQLITE_DONE) { DBG_PRINT((" CInvHead has no matched record! errorcode: %d", returnVal)); return returnVal; } else { DBG_PRINT(("errorcode: %d", returnVal)); return returnVal; } m_kpje = m_kphjje - m_kpse; //查询INV_DET表 INT8 chFilter[256]; memset((void *)chFilter, 0x00, sizeof(chFilter)); sprintf(chFilter, "where FPDM = '%s' and FPHM = %u", m_fpdm.c_str(), m_fphm); DBG_PRINT(("chFilter = %s", chFilter)); m_pInvDet->m_filter = chFilter; m_pInvDet->Requery(); INT32 errorcode = m_pInvDet->MoveFirst(); if (errorcode != SQLITE_ROW) { if ((errorcode == SQLITE_DONE)&&(m_sphsl==0)) //没有明细 { m_pInvDet->MoveEnd(); return SQLITE_OK; } else { DBG_PRINT(("errorcode: %d", errorcode)); m_pInvDet->MoveEnd(); return errorcode; //可能返回SQLITE_DONE,或其它错误码 } } CInvDet *p; while (errorcode == SQLITE_ROW) { // p = new CInvDet; p = p->GetNewInvDet();//从静态数组获取一个可用的CInvDet对象 p->m_no = m_pInvDet->m_no; p->m_fpdm = m_pInvDet->m_fpdm; p->m_fphm = m_pInvDet->m_fphm; p->m_kprq = m_pInvDet->m_kprq; p->m_kpsj = m_pInvDet->m_kpsj; p->m_kplx = m_pInvDet->m_kplx; p->m_sphxh = m_pInvDet->m_sphxh; p->m_spbm = m_pInvDet->m_spbm; p->m_spmc = m_pInvDet->m_spmc; p->m_spdj = m_pInvDet->m_spdj; p->m_spsl = m_pInvDet->m_spsl; p->m_spje = m_pInvDet->m_spje; p->m_spdw = m_pInvDet->m_spdw; p->m_sl = m_pInvDet->m_sl; p->m_spse = m_pInvDet->m_spse; p->m_property = m_pInvDet->m_property; p->m_dj = m_pInvDet->m_dj; p->m_je = m_pInvDet->m_je; InsertNode(p); //插入节点 DBG_PRINT(("============================")); DBG_PRINT(("NO, %d", m_pInvDet->m_no)); DBG_PRINT(("m_fpdm, %s", m_pInvDet->m_fpdm.c_str())); DBG_PRINT(("m_fphm, %d", m_pInvDet->m_fphm)); DBG_PRINT(("m_sphxh, %d", m_pInvDet->m_sphxh)); DBG_PRINT(("m_kprq, %lu", m_pInvDet->m_kprq)); DBG_PRINT(("m_kpsj, %lu", m_pInvDet->m_kpsj)); DBG_PRINT(("m_spbm, %s", m_pInvDet->m_spbm.c_str())); DBG_PRINT(("m_spmc, %s", m_pInvDet->m_spmc.c_str())); DBG_PRINT(("m_spdj, %f", m_pInvDet->m_spdj)); DBG_PRINT(("m_spsl, %f", m_pInvDet->m_spsl)); DBG_PRINT(("m_spje, %lld", m_pInvDet->m_spje)); DBG_PRINT(("m_spse, %lld", m_pInvDet->m_spse)); DBG_PRINT(("m_spdw, %s", m_pInvDet->m_spdw.c_str())); // DBG_PRINT(("PRICE, %u", m_pInvDet->m_dpNo)); errorcode = m_pInvDet->MoveNext(); } m_pInvDet->MoveEnd(); //m_db->MutexUnlock(); if (errorcode==SQLITE_DONE) { DBG_PRINT(("退出CInvHead::Load函数")); return SQLITE_OK; } DBG_PRINT(("退出CInvHead::Load函数")); return errorcode; }
UINT8 SimpleMakeNormalInv(SaleData &tmpSaleData,string &strErr) { UINT8 ret; CInvDet *invDet = NULL; CInvHead invHead; tmpSaleData.m_smallInvInfo = &invHead; UINT32 nCurDate = TDateTime::CurrentDateTime().FormatInt(YYYYMMDD); UINT32 nCurTime = TDateTime::CurrentDateTime().FormatInt(HHMMSS); INT64 tmpDJ=0; INT64 moneyTaxSum=0; //组装正票 //组装发票头 //tmpSaleData.m_smallInvInfo->m_fphm = g_globalArg->m_curInvVol->m_ieno + 1 - // g_globalArg->m_curInvVol->m_remain; /**< 发票号码 */ ret = SALE_GetCurInv(g_globalArg->m_curInvVol,strErr); DBG_PRINT(("strErr= %s",strErr.c_str())); if (ret ==FAILURE) { DBG_PRINT(("获取当前发票号码错误:%s",strErr.c_str())); return ret; } tmpSaleData.m_smallInvInfo->m_fphm = g_globalArg->m_curInvVol->m_curInvNo; tmpSaleData.m_smallInvInfo->m_fpdm = g_globalArg->m_curInvVol->m_code; /**< 发票代码简称 */ tmpSaleData.m_smallInvInfo->m_kplx = NORMAL_INV; //开票类型 tmpSaleData.m_smallInvInfo->m_yfphm = 0; //原发票号码 tmpSaleData.m_smallInvInfo->m_yfpdm = ""; //原发票号码 tmpSaleData.m_smallInvInfo->m_fplb = atoi(g_globalArg->m_invKind->m_pzCode.c_str()); //发票种类 tmpSaleData.m_smallInvInfo->m_fkdw = "个人"; //付款人名称 tmpSaleData.m_smallInvInfo->m_fkdwsh = "012345678901234"; tmpSaleData.m_smallInvInfo->m_sky = g_globalArg->m_operator->m_name; //操作员名称 // tmpSaleData.m_smallInvInfo->m_opId = g_globalArg->m_operator->m_opId; //操作员id // tmpSaleData.m_smallInvInfo->m_uID = 0; //纳税户名称ID号 // tmpSaleData.m_smallInvInfo->m_ptype = 0; //付款方式 tmpSaleData.m_smallInvInfo->m_sphsl = 3;//当前发票总商品行加1 tmpSaleData.m_smallInvInfo->m_kphjje = (INT64)(3.00 * SUM_EXTENSION);//当前发票总金额 tmpSaleData.m_smallInvInfo->m_backup1 = ""; //备用字段1 // tmpSaleData.m_smallInvInfo->m_backup2 = ""; //备用字段2 // tmpSaleData.m_smallInvInfo->m_backup3 = ""; //备用字段3 //发票明细 for(UINT8 i = 1; i<4; i++) { // invDet = new CInvDet; invDet = invDet->GetNewInvDet();//从静态数组获取一个可用的CInvDet对象 DBG_ASSERT_EXIT((invDet != NULL), (" invDet == NULL!")); invDet->m_fpdm = tmpSaleData.m_smallInvInfo->m_fpdm; invDet->m_fphm = tmpSaleData.m_smallInvInfo->m_fphm; // invDet->m_sphxh = i; invDet->m_kprq = nCurDate; invDet->m_kpsj = nCurTime; invDet->m_kplx = NORMAL_INV; invDet->m_sky = g_globalArg->m_operator->m_name; invDet->m_spbm = "0000000000001"; invDet->m_sphxh = i; invDet->m_spmc = "测试商品1"; // invDet->m_taxId = 1; //非税控只允许税目1 invDet->m_spsl = 1.0; //保存四舍五入后的值 invDet->m_dotNum = 0; invDet->m_spdj = (double)1.00; invDet->m_spje = (INT64)(1.00*SUM_EXTENSION); invDet->m_sl = 0.03; invDet->m_spse=tmpSaleData.CountTax(invDet->m_spje, (UINT32)(invDet->m_sl*SUM_EXTENSION)); //商品税额 invDet->m_je= invDet->m_spje - invDet->m_spse; //商品金额(不含税) invDet->m_spdw = "个"; //商品单位 tmpDJ = double2int(invDet->m_spdj*SUM_EXTENSION); DBG_PRINT(("tmpDJ==%lld ", tmpDJ)); tmpDJ -=tmpSaleData.CountTax(double2int(invDet->m_spdj*SUM_EXTENSION), (UINT32)(invDet->m_sl*SUM_EXTENSION)); DBG_PRINT(("tmpDJ==%lld ", tmpDJ)); invDet->m_dj= (double)(tmpDJ*1.0)/SUM_EXTENSION; //商品单价(不含税) invDet->m_je= invDet->m_spje-invDet->m_spse; //商品金额(不含税) moneyTaxSum += invDet->m_spse; invDet->m_property = DETAIL_GENERAL_GOODS; invDet->m_backup = ""; tmpSaleData.m_smallInvInfo->InsertNode(invDet); //插入节点 } //当前发票累计税额增加 tmpSaleData.m_smallInvInfo->m_kpse = moneyTaxSum; DBG_PRINT(("当前发票累计税额 tmpSaleData.m_smallInvInfo->m_kpse = %lld", tmpSaleData.m_smallInvInfo->m_kpse)); moneyTaxSum = 0; ret = tmpSaleData.MakeInvoiceHandle(PRINT, INV_ROLL_PROC); tmpSaleData.m_smallInvInfo->DelList(); tmpSaleData.m_smallInvInfo = NULL; if (ret != SUCCESS) { if (ret==DB_FULL) { DBG_RETURN(DB_FULL); } else if (ret==HAVE_ROLLED) { DBG_RETURN(HAVE_ROLLED); } else { DBG_RETURN(ret); } } DBG_RETURN(SUCCESS); }
INT32 CFpkj::XmlParse(XMLParse *parse, CInvHead *pInvInfo) { UINT8 i = 0; parse->LocateNodeByName(parse->m_RootElement, "body"); parse->m_parentElement[1] = parse->m_Child; parse->LocateNodeByName(parse->m_parentElement[1], "input"); parse->m_parentElement[2] = parse->m_Child; parse->LocateNodeByName(parse->m_parentElement[2], "jqbh"); m_ywxml_gy.m_jqbh = parse->GetText(); //税控收款机编号 DBG_PRINT(("m_ywxml_gy.m_jqbh == %s", m_ywxml_gy.m_jqbh.c_str())); pInvInfo->m_jqbh = m_ywxml_gy.m_jqbh; DBG_PRINT(("pInvInfo->m_jqbh == %s", pInvInfo->m_jqbh.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "zskl"); pInvInfo->m_zskl = parse->GetText(); //证书口令 DBG_PRINT(("pInvInfo->m_zskl == %s", pInvInfo->m_zskl.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "xhdwdm"); m_ywxml_gy.m_nsrsbh = parse->GetText(); DBG_PRINT(("m_ywxml_gy.nsrsbh == %s", m_ywxml_gy.m_nsrsbh.c_str())); pInvInfo->m_xfsh = parse->GetText(); DBG_PRINT(("pInvInfo->m_xfsh == %s", pInvInfo->m_xfsh.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "xhdwmc"); pInvInfo->m_xfmc = parse->GetText(); DBG_PRINT(("pInvInfo->m_xfmc == %s", pInvInfo->m_xfmc.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "sksbbh"); m_ywxml_gy.m_sksbbh = parse->GetText(); DBG_PRINT(("m_ywxml_gy.sksbbh == %s", m_ywxml_gy.m_sksbbh.c_str())); pInvInfo->m_sksbbh = m_ywxml_gy.m_sksbbh; DBG_PRINT(("pInvInfo->m_sksbbh == %s", pInvInfo->m_sksbbh.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "sksbkl"); m_ywxml_gy.m_sksbkl = parse->GetText(); DBG_PRINT(("m_ywxml_gy.sksbkl == %s", m_ywxml_gy.m_sksbkl.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "fplxdm"); m_ywxml_gy.m_fplxdm = parse->GetText(); pInvInfo->m_fplxdm = m_ywxml_gy.m_fplxdm; DBG_PRINT(("m_ywxml_gy.fplxdm == %s", m_ywxml_gy.m_fplxdm.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "kplx"); pInvInfo->m_kplx = (UINT8)atoi(parse->GetText().c_str()); DBG_PRINT(("pInvInfo->m_kplx == %u", pInvInfo->m_kplx)); // parse->LocateNodeByName(parse->m_parentElement[2], "hyfl"); // pInvInfo->m_hyfl = parse->GetText(); // DBG_PRINT(("hyfl== %s", pInvInfo->m_hyfl.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "ghdwdm"); pInvInfo->m_payerCode = parse->GetText(); CJSKMakeInvoice::FilterSpace(pInvInfo->m_payerCode); if(pInvInfo->m_payerCode == "") pInvInfo->m_payerCode = "000000000000000"; DBG_PRINT(("pInvInfo->m_payerCode == %s", pInvInfo->m_payerCode.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "ghdwmc"); pInvInfo->m_fkdw = parse->GetText(); CJSKMakeInvoice::FilterSpace(pInvInfo->m_fkdw); DBG_PRINT(("pInvInfo->m_fkdw == %s", pInvInfo->m_fkdw.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "sfxm"); parse->m_parentElement[3] = parse->m_Child; pInvInfo->m_sphsl = atoi(parse->GetAttr("count").c_str()); //解析XML后得到商品明细行数 DBG_PRINT(("pInvInfo->m_sphsl == %u", pInvInfo->m_sphsl)); CInvDet* pInvDet = NULL; for (i=0; i<pInvInfo->m_sphsl; i++) { pInvDet = pInvDet->GetNewInvDet(); //从静态数组获取一个可用的CInvDet对象 DBG_ASSERT_EXIT((pInvDet != NULL), (" pInvDet == NULL!")); pInvDet->m_sphxh = i+1; //得到group节点 parse->LocateNodeByName(parse->m_parentElement[3], "group", i); parse->m_parentElement[4] = parse->m_Child; parse->LocateNodeByName(parse->m_parentElement[4], "xm"); pInvDet->m_spmc = parse->GetText(); CJSKMakeInvoice::FilterSpace(pInvDet->m_spmc); DBG_PRINT(("pInvDet->m_spmc == %s", pInvDet->m_spmc.c_str())); parse->LocateNodeByName(parse->m_parentElement[4], "dj"); pInvDet->m_dj = atof(parse->GetText().c_str()); DBG_PRINT(("pInvDet->m_dj == %lf", pInvDet->m_dj)); parse->LocateNodeByName(parse->m_parentElement[4], "sl"); pInvDet->m_spsl = atof(parse->GetText().c_str()); DBG_PRINT(("pInvDet->m_spsl == %lf", pInvDet->m_spsl)); parse->LocateNodeByName(parse->m_parentElement[4], "je"); pInvDet->m_je =double2int(atof(parse->GetText().c_str())*SUM_EXTENSION); DBG_PRINT(("pInvDet->m_je == %lld", pInvDet->m_je)); parse->LocateNodeByName(parse->m_parentElement[4], "zsl"); pInvDet->m_sl = (float)atof(parse->GetText().c_str()); DBG_PRINT(("pInvDet->m_sl == %f", pInvDet->m_sl)); parse->LocateNodeByName(parse->m_parentElement[4], "se"); DBG_PRINT(("pInvDet->m_spse == %s", parse->GetText().c_str())); pInvDet->m_spse = double2int(atof(parse->GetText().c_str())*SUM_EXTENSION); DBG_PRINT(("pInvDet->m_spse == %lld", pInvDet->m_spse)); parse->LocateNodeByName(parse->m_parentElement[4], "hsdj"); pInvDet->m_spdj = atof(parse->GetText().c_str()); DBG_PRINT(("pInvDet->m_spdj == %lf", pInvDet->m_spdj)); parse->LocateNodeByName(parse->m_parentElement[4], "hsje"); pInvDet->m_spje = double2int(atof(parse->GetText().c_str())*SUM_EXTENSION); DBG_PRINT(("pInvDet->m_spje == %lld", pInvDet->m_spje)); pInvInfo->InsertNode(pInvDet); pInvDet = NULL; } parse->LocateNodeByName(parse->m_parentElement[2], "hjje"); pInvInfo->m_kpje = double2int(atof(parse->GetText().c_str())*SUM_EXTENSION); DBG_PRINT(("pInvInfo->m_kpje == %lld", pInvInfo->m_kpje)); parse->LocateNodeByName(parse->m_parentElement[2], "hjse"); DBG_PRINT(("pInvDet->m_spse == %s", parse->GetText().c_str())); pInvInfo->m_kpse = double2int(atof(parse->GetText().c_str())*SUM_EXTENSION); DBG_PRINT(("pInvInfo->m_kpse == %lld", pInvInfo->m_kpse)); parse->LocateNodeByName(parse->m_parentElement[2], "jshj"); pInvInfo->m_kphjje = double2int(atof(parse->GetText().c_str())*SUM_EXTENSION); DBG_PRINT(("pInvInfo->m_kphjje == %lld", pInvInfo->m_kphjje)); parse->LocateNodeByName(parse->m_parentElement[2], "bz"); pInvInfo->m_backup1 = parse->GetText(); CJSKMakeInvoice::FilterSpace(pInvInfo->m_backup1); DBG_PRINT(("pInvInfo->m_backup1 == %s", pInvInfo->m_backup1.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "skr"); pInvInfo->m_sky = parse->GetText(); CJSKMakeInvoice::FilterSpace(pInvInfo->m_sky); DBG_PRINT(("pInvInfo->m_sky == %s", pInvInfo->m_sky.c_str())); // parse->LocateNodeByName(parse->m_parentElement[2], "kpr"); // pInvInfo->m_sky = parse->GetText(); // DBG_PRINT(("pInvInfo->m_sky == %s", pInvInfo->m_sky.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "yfpdm"); pInvInfo->m_yfpdm = parse->GetText(); DBG_PRINT(("pInvInfo->m_yfpdm == %s", pInvInfo->m_yfpdm.c_str())); parse->LocateNodeByName(parse->m_parentElement[2], "yfphm"); pInvInfo->m_yfphm = atoi(parse->GetText().c_str()); DBG_PRINT(("pInvInfo->m_yfphm == %u", pInvInfo->m_yfphm)); return SUCCESS; }
void CDataTransformFunc::Data2InvHead(CDataInvHead *pDataInvHead, CInvHead *pInvHead) { DBG_PRINT(("Data2InvHead Begin")); pInvHead->m_fpdm = pDataInvHead->m_fpdm; /**< 发票代码 */ pInvHead->m_fphm = pDataInvHead->m_fphm; /**< 发票号码 */ pInvHead->m_kprq = pDataInvHead->m_kprq; /**< 开票日期 */ pInvHead->m_kpsj = pDataInvHead->m_kpsj; /**< 开票时间 */ pInvHead->m_kplx = pDataInvHead->m_kplx; /**< 开票类型 */ pInvHead->m_kphjje = pDataInvHead->m_kphjje; /**< 开票合计金额(含税) */ pInvHead->m_yfpdm = pDataInvHead->m_yfpdm; /**< 原发票代码 */ pInvHead->m_yfphm = pDataInvHead->m_yfphm; /**< 原发票号码 */ pInvHead->m_fkdw = pDataInvHead->m_fkdw; /**< 付款单位 */ pInvHead->m_payerCode = pDataInvHead->m_payerCode; /**< 付款单位税号 */ pInvHead->m_sky = pDataInvHead->m_sky; /**< 收款员 */ pInvHead->m_sphsl = pDataInvHead->m_sphsl; /**< 商品行数量 */ pInvHead-> m_fwm = pDataInvHead->m_fwm; /**< 防伪税控吗 */ pInvHead->m_fplb = pDataInvHead->m_fplb; /**< 发票类别 */ pInvHead->m_scbz = pDataInvHead->m_scbz; /**< 上传标志 */ pInvHead->m_fpsyh = pDataInvHead->m_fpsyh; /**< 发票索引号*/ pInvHead->m_zfsj = pDataInvHead->m_zfsj; /**< 作废时间 */ pInvHead->m_casign = pDataInvHead->m_casign; /**< CA签名*/ pInvHead->m_backup1 = pDataInvHead->m_backup1; /**< 备用1 */ pInvHead->m_backup2 = pDataInvHead->m_backup2; /**< 备用2 */ pInvHead->m_kpse = pDataInvHead->m_kpse; /**< 税额*/ pInvHead->m_kpje = pDataInvHead->m_kpje; /**< 金额(不含税额)*/ pInvHead->m_fplxdm = pDataInvHead->m_fplxdm; /**< 发票类型代码 */ pInvHead->m_zfbz = pDataInvHead->m_zfbz; /**< 作废标志*/ pInvHead->m_hyfl = pDataInvHead->m_hyfl; /**< 行业分类 */ pInvHead->m_fpzl = pDataInvHead->m_fpzl; /**< 发票种类 默认为"c" */ pInvHead->m_gfdzdh = pDataInvHead->m_gfdzdh; /**< 购方地址电话 */ pInvHead->m_gfyhzh = pDataInvHead->m_gfyhzh; /**< 购方银行账号 */ pInvHead->m_jqbh = pDataInvHead->m_jqbh; /**< 机器编号 */ pInvHead->m_zyspmc = pDataInvHead->m_zyspmc; /**< 主要商品名称 */ pInvHead->m_bsq = pDataInvHead->m_bsq; /**< 报税期 */ pInvHead->m_sksbbh = pDataInvHead->m_sksbbh; /**< 金税盘编号 */ pInvHead->m_xfmc = pDataInvHead->m_xfmc; /**< 销方名称 */ pInvHead->m_xfsh = pDataInvHead->m_xfsh; /**< 销方税号 */ pInvHead->m_xfdzdh = pDataInvHead->m_xfdzdh; /**< 销方地址电话 */ pInvHead->m_xfyhzh = pDataInvHead->m_xfyhzh; /**< 销方银行账号 */ pInvHead->m_fhr = pDataInvHead->m_fhr; /**< 复核人 */ pInvHead->m_qdbz = pDataInvHead->m_qdbz; /**< 清单标志 */ pInvHead->m_zskl = pDataInvHead->m_zskl; /**< 证书口令 */ pInvHead->m_CurTime = pDataInvHead->m_CurTime; /**< 当前时间*/ CInvDet *pInvDet = NULL; pInvHead->DelList(); vector<CDataInvDet>::iterator iter; for (iter=pDataInvHead->m_gvector.begin(); iter!=pDataInvHead->m_gvector.end(); ++iter) { pInvDet = pInvDet->GetNewInvDet(); pInvDet->m_fpdm = iter->m_fpdm; /**< 发票代码 */ pInvDet->m_fphm = iter->m_fphm; /**< 发票号码 */ pInvDet->m_kprq = iter->m_kprq; /**< 开票日期 */ pInvDet->m_kpsj = iter->m_kpsj; /**< 开票时间 */ pInvDet->m_kplx = iter->m_kplx; /**< 开票类型 */ pInvDet->m_opid = iter->m_opid; /**< 操作员id */ pInvDet->m_sky = iter->m_sky; /**< 收款员 */ pInvDet->m_sphxh = iter->m_sphxh; /**< 商品行序号,从1开始 */ pInvDet->m_spbm = iter->m_spbm; /**< 商品编码 */ pInvDet->m_spmc = iter->m_spmc; /**< 商品名称 */ pInvDet->m_spdj = iter->m_spdj; /**< 商品单价(含税) */ pInvDet->m_spsl = iter->m_spsl; /**< 商品数量 */ pInvDet->m_spje = iter->m_spje; /**< 商品金额(含税) */ pInvDet->m_sl = iter->m_sl; /**< 税率 */ pInvDet->m_property = iter->m_property; /**< 商品行属性 */ pInvDet->m_spdw = iter->m_spdw; /**< 单位 */ pInvDet->m_ggxh = iter->m_ggxh; /**< 规格型号 */ pInvDet->m_spse = iter->m_spse; /**< 商品税额 */ pInvDet->m_dj = iter->m_dj; /**< 商品单价(不含税) */ pInvDet->m_je = iter->m_je; /**< 商品金额(不含税) */ pInvDet->m_dotNum = iter->m_dotNum; /**< 数量四舍五入后的小数位数 */ pInvDet->m_backup = iter->m_backup; /**< 备用 */ pInvDet->m_hsbz = iter->m_hsbz; /**< 含税价标志(1:单价含税 0:单价不含税) */ DBG_PRINT(("m_sphxh = %u", pInvDet->m_sphxh)); DBG_PRINT(("m_spmc = %s", pInvDet->m_spmc.c_str())); DBG_PRINT(("m_spdj = %.3f", pInvDet->m_spdj)); DBG_PRINT(("m_spsl = %.3f", pInvDet->m_spsl)); DBG_PRINT(("m_spje = %lld", pInvDet->m_spje)); DBG_PRINT(("m_sl = %.3f", pInvDet->m_sl)); DBG_PRINT(("m_spse = %lld", pInvDet->m_spse)); DBG_PRINT(("m_dj = %.3f", pInvDet->m_dj)); DBG_PRINT(("m_je = %lld", pInvDet->m_je)); pInvHead->InsertNode(pInvDet); pInvDet = NULL; } return; }
INT32 CJSKMakeInvoice::FPZF_Proc(CInvHead *pInvhead, UINT8 zflx, string &strErr) { DBG_PRINT(("===== FPZF_Proc Begin() ======")); DBG_ASSERT_EXIT((pInvhead != NULL), (" pInvhead == NULL!")); INT32 retcode = JSK_SUCCESS; if(zflx == 0) //空白票作废 { pInvhead->m_kplx = JSK_WASTE_INV; pInvhead->m_xfmc = g_globalArgLib->m_corpInfo->m_Nsrmc; retcode = FPKJ_Proc(pInvhead, strErr, 1); return retcode; } ////////////////////////////////////////////////////////////////////////// if(zflx != 1) { strErr = "发票作废类型错误!"; return JSK_FAILURE; } CJSKInvManageProc::fplxdm2fplx(pInvhead->m_fplxdm, pInvhead->m_fplb); //已开票作废 //查询数据库中已开发票信息 INT8 sqlbuf[256]; UINT32 errorcode; CInvHead tmpInvHead; memset(sqlbuf, 0, sizeof(sqlbuf)); sprintf(sqlbuf, "where FPDM='%s' and FPHM=%u", pInvhead->m_fpdm.c_str(), pInvhead->m_fphm); DBG_PRINT(("sqlbuf = %s", sqlbuf)); pInvhead->m_filter.append(sqlbuf); if(pInvhead->Load() != SQLITE_OK) { DBG_PRINT(("here find by jsp")); //数据库查询不到,从盘中查询 retcode = CJSKInfoFunc::GetInvDetailInfoNO(pInvhead, strErr); if(retcode != JSK_SUCCESS) { return retcode; } pInvhead->Save(); } //已开发票作废控制 if(pInvhead->m_kplx == JSK_NORMAL_INV) { pInvhead->m_kplx = JSK_WASTE_NOR; } else if(pInvhead->m_kplx == JSK_RETURN_INV) { pInvhead->m_kplx = JSK_WASTE_RET; } else { retcode = JSK_COMMON_ERR_NO; strErr = "废票不能再次作废!"; return retcode; } //权限控制 retcode = MakeInvAuthority(pInvhead, strErr); if( retcode != JSK_SUCCESS ) { return retcode; } retcode = CJSKInfoFunc::WasteInvHandInfo(pInvhead, strErr); if( retcode != JSK_SUCCESS ) { return retcode; } //数据库事务开始 pInvhead->BeginTransaction(); //修改数据库对应信息 tmpInvHead.m_kplx = pInvhead->m_kplx; tmpInvHead.m_fpsyh = pInvhead->m_fpsyh; tmpInvHead.m_casign = pInvhead->m_casign; tmpInvHead.m_zfsj = pInvhead->m_zfsj; retcode = tmpInvHead.Update(sqlbuf, &tmpInvHead.m_kplx, &tmpInvHead.m_fpsyh, &tmpInvHead.m_zfsj, &tmpInvHead.m_casign, NULL); DBG_PRINT(("更新DB的INV_HEAD:retcode = %d", retcode)); CInvDet invDet; invDet.m_kplx = pInvhead->m_kplx; retcode = invDet.Update(sqlbuf, &invDet.m_kplx, NULL); DBG_PRINT(("更新DB的INV_DET:retcode = %d", retcode)); if(pInvhead->m_kplx == JSK_WASTE_RET ) { DBG_PRINT(("更新RT_INV表")); CRtInv curRtInv; CRtInv *pRtInv = &curRtInv; memset(sqlbuf, 0, sizeof(sqlbuf)); sprintf(sqlbuf, "where FPDM='%s' and FPHM=%u ", pInvhead->m_yfpdm.c_str(), pInvhead->m_yfphm); DBG_PRINT(("sqlbuf = %s", sqlbuf)); pRtInv->m_filter.append(sqlbuf); pRtInv->Delete(); } //处理INV_SERV表,如果已上传发票,需要重新记录INV_SERV??? CInvServ invServ; errorcode = invServ.Save(pInvhead, g_globalArgLib->m_InvServNum, g_globalArgLib->m_InvServSum, strErr); DBG_PRINT(("存储到DB的INV_SERV, errorcode = %u", errorcode)); //数据库事务结束 pInvhead->EndTransaction(); return JSK_SUCCESS; }
void CMaintenanceMenu::OnButton9(int iEvent, unsigned char * pEventData, int iDataLen) { if (g_globalArg->m_initFlag == 0) { CaMsgBox::ShowMsg("机器未初始化"); return ; } CInvServ invServ; CInvHead invHead; CInvDet invDet; INT32 nErrCode; INT8 chValue[128]; invServ.Requery(); nErrCode = invServ.LoadOneRecord(); DBG_PRINT(("nErrCode= %u",nErrCode)); if( nErrCode != SQLITE_OK ) { CaMsgBox::ShowMsg("无缓存记录"); return; } memset(chValue, 0, sizeof(chValue)); sprintf(chValue,"代码:'%s' 号码:%u 确认删除?", invServ.m_code.c_str(), invServ.m_InvNo); CaMsgBox msgBox(chValue,CaMsgBox::MB_YESNO); msgBox.ShowBox(); if (msgBox.m_iStatus == OK_PRESSED) { memset((void*)chValue, 0, sizeof(chValue)); //sprintf(chValue, "where CODE = '%s' and INV_NO = %u", invServ.m_code.c_str(), invServ.m_InvNo); // 更改inv_serv中的两个字段 sprintf(chValue, "where FPDM = '%s' and FPHM = %u", invServ.m_code.c_str(), invServ.m_InvNo); invHead.m_filter = chValue; nErrCode = invHead.Delete(); if (SQLITE_OK != nErrCode) { CaMsgBox::ShowMsg("删除失败"); return; } invDet.m_filter = chValue; nErrCode = invDet.Delete(); if (SQLITE_OK != nErrCode) { CaMsgBox::ShowMsg("删除失败"); return; } sprintf(chValue, "where CODE = '%s' and INV_NO = %u", invServ.m_code.c_str(), invServ.m_InvNo); invServ.m_filter = chValue; nErrCode = invServ.Delete(); if (SQLITE_OK != nErrCode) { CaMsgBox::ShowMsg("删除失败"); return; } CaMsgBox::ShowMsg("删除成功"); if(0 != g_globalArg->m_InvServNum) { g_globalArg->m_InvServNum--; } DBG_PRINT(("m_InvServNum = %u", g_globalArg->m_InvServNum )); } }
INT32 CFpcx::XmlParse() { UINT8 i = 0; UINT8 j = 0; UINT8 fpzt = 0; //添加body节点 m_pXmlParse.LocateNodeByName(m_pXmlParse.m_RootElement, "body"); m_pXmlParse.m_parentElement[1] = m_pXmlParse.m_Child; m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[1], "output"); m_pXmlParse.m_parentElement[2] = m_pXmlParse.m_Child; m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[2], "returncode"); m_retInfo.m_retCode = m_pXmlParse.GetText(); DBG_PRINT(("returncode : %s", m_retInfo.m_retCode.c_str())); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[2], "returnmsg"); m_retInfo.m_retMsg = m_pXmlParse.GetText(); DBG_PRINT(("returnmsg : %s", m_retInfo.m_retMsg.c_str())); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[2], "fpxx"); m_pXmlParse.m_parentElement[3] = m_pXmlParse.m_Child; m_InvCOunt = atoi(m_pXmlParse.GetAttr("count").c_str()); for (i=0; i<m_InvCOunt; i++) { m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[3], "group", i); m_pXmlParse.m_parentElement[4] = m_pXmlParse.m_Child; m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "fpdm"); m_InvInfo.m_fpdm = m_pXmlParse.GetText(); DBG_PRINT(("m_InvInfo.m_fpdm : %s", m_InvInfo.m_fpdm.c_str())); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "fphm"); m_InvInfo.m_fphm = atoi(m_pXmlParse.GetText().c_str()); DBG_PRINT(("m_InvInfo.m_fphm : %u", m_InvInfo.m_fphm)); //发票状态 m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "fpzt"); fpzt = atoi(m_pXmlParse.GetText().c_str()); switch(fpzt) { case 0: m_InvInfo.m_kplx = NORMAL_INV; break; case 1: m_InvInfo.m_kplx = RETURN_INV; break; case 2: m_InvInfo.m_kplx = WASTE_INV; break; case 3: m_InvInfo.m_kplx = WASTE_NOR; break; case 4: m_InvInfo.m_kplx = WASTE_RET; break; } m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "scbz"); m_InvInfo.m_scbz = (UINT8)atoi(m_pXmlParse.GetText().c_str()); DBG_PRINT(("m_InvInfo.m_scbz : %u", m_InvInfo.m_scbz)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "kprq"); m_InvInfo.m_kprq = atoi(m_pXmlParse.GetText().c_str()); DBG_PRINT(("m_InvInfo.m_kprq : %u", m_InvInfo.m_kprq)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "kpsj"); m_InvInfo.m_kpsj = atoi(m_pXmlParse.GetText().c_str()); DBG_PRINT(("m_InvInfo.m_kpsj : %u", m_InvInfo.m_kpsj)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "skm"); m_InvInfo.m_fwm = m_pXmlParse.GetText(); DBG_PRINT(("m_InvInfo.m_fwm : %s", m_InvInfo.m_fwm.c_str())); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "sksbbh"); //税控设备编号 m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "skdwmc"); //收款单位名称 m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "xhdwdm"); //销货单位识别号 m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "xhdwmc"); //销货单位名称 //购货单位识别号 m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "ghdwdm"); m_InvInfo.m_fkdwsh = m_pXmlParse.GetText(); DBG_PRINT(("m_InvInfo.m_fkdwsh : %s",m_InvInfo.m_fkdwsh.c_str())); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "ghdwmc"); m_InvInfo.m_fkdw = m_pXmlParse.GetText(); DBG_PRINT(("m_InvInfo.m_fkdw : %s",m_InvInfo.m_fkdw.c_str())); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "sfxm"); m_pXmlParse.m_parentElement[5] = m_pXmlParse.m_Child; m_InvInfo.m_sphsl = atoi(m_pXmlParse.GetAttr("count").c_str()); DBG_PRINT(("m_InvInfo.m_sphsl : %u", m_InvInfo.m_sphsl)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "skr"); m_InvInfo.m_sky = m_pXmlParse.GetText();//中间件工程中,skr、kpr、zfr全用m_sky组装 DBG_PRINT(("m_InvInfo.m_sky : %s", m_InvInfo.m_sky.c_str())); CInvDet *pInvDet = NULL; for (j=0; j<m_InvInfo.m_sphsl; j++) { pInvDet = pInvDet->GetNewInvDet(); //从静态数组获取一个可用的CInvDet对象 DBG_ASSERT_EXIT((pInvDet != NULL), (" pInvDet == NULL!")); pInvDet->m_fpdm = m_InvInfo.m_fpdm; pInvDet->m_fphm = m_InvInfo.m_fphm; pInvDet->m_kprq = m_InvInfo.m_kprq; pInvDet->m_kpsj = m_InvInfo.m_kpsj; pInvDet->m_kplx = m_InvInfo.m_kplx; pInvDet->m_sky = m_InvInfo.m_sky; pInvDet->m_sphxh = j+1; m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[5], "group", j); m_pXmlParse.m_parentElement[6] = m_pXmlParse.m_Child; m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[6], "xm");; pInvDet->m_spmc = m_pXmlParse.GetText(); DBG_PRINT(("pInvDet->m_spmc : %s", pInvDet->m_spmc.c_str())); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[6], "dj"); pInvDet->m_dj = atof(m_pXmlParse.GetText().c_str());//单价不含税 DBG_PRINT(("pInvDet->m_dj : %.3lf", pInvDet->m_dj)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[6], "sl"); pInvDet->m_spsl = atof(m_pXmlParse.GetText().c_str());//数量 DBG_PRINT(("pInvDet->m_spdj : %.3lf", pInvDet->m_spsl)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[6], "je"); pInvDet->m_je = double2int(atof(m_pXmlParse.GetText().c_str())*SUM_EXTENSION);//金额不含税 DBG_PRINT(("pInvDet->m_spje : %lld", pInvDet->m_je)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[6], "zsl"); pInvDet->m_sl = atof(m_pXmlParse.GetText().c_str());//税率 DBG_PRINT(("pInvDet->m_sl : %.2lf", pInvDet->m_sl)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[6], "se"); pInvDet->m_spse = double2int(atof(m_pXmlParse.GetText().c_str())*SUM_EXTENSION);//税额 DBG_PRINT(("pInvDet->m_spse : %lld", pInvDet->m_spse)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[6], "hsdj"); pInvDet->m_spdj = atof(m_pXmlParse.GetText().c_str());//含税单价 DBG_PRINT(("pInvDet->m_spdj : %.3lf", pInvDet->m_spdj)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[6], "hsje"); pInvDet->m_spje = double2int(atof(m_pXmlParse.GetText().c_str())*SUM_EXTENSION);//含税金额 DBG_PRINT(("pInvDet->m_spje : %lld", pInvDet->m_spje)); m_InvInfo.InsertNode(pInvDet); pInvDet =NULL; } m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "hjje"); m_InvInfo.m_kpje = double2int(atof(m_pXmlParse.GetText().c_str())*SUM_EXTENSION); DBG_PRINT(("m_InvInfo.m_kpje : %lld", m_InvInfo.m_kpje)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "hjse"); m_InvInfo.m_kpse = double2int(atof(m_pXmlParse.GetText().c_str())*SUM_EXTENSION); DBG_PRINT(("m_InvInfo.m_kpse : %lld", m_InvInfo.m_kpse)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "jshj"); m_InvInfo.m_kphjje = double2int(atof(m_pXmlParse.GetText().c_str())*SUM_EXTENSION); DBG_PRINT(("m_InvInfo.m_kphjje : %lld", m_InvInfo.m_kphjje)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "bz"); m_InvInfo.m_backup1 = m_pXmlParse.GetText(); DBG_PRINT(("m_InvInfo.m_backup1 : %s", m_InvInfo.m_backup1.c_str())); // m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "kpr"); // m_InvInfo.m_sky = m_pXmlParse.GetText(); // DBG_PRINT(("m_InvInfo.m_sky : %s", m_InvInfo.m_sky.c_str())); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "yfpdm"); m_InvInfo.m_yfpdm = m_pXmlParse.GetText(); DBG_PRINT(("m_InvInfo.m_yfpdm : %s", m_InvInfo.m_yfpdm.c_str())); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "yfphm"); m_InvInfo.m_yfphm = atoi(m_pXmlParse.GetText().c_str()); //作废日期 // m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "zfrq"); // memset(Buf, 0, sizeof(Buf)); // sprintf(Buf, "%u",m_InvInfo.zfrq); // m_pXmlParse.GetText(Buf); // DBG_PRINT(("buf : %s", Buf)); //作废人 // m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "zfr"); // m_pXmlParse.GetText(m_InvInfo.m_yfpdm); // DBG_PRINT(("m_InvInfo.m_yfpdm : %s", m_InvInfo.m_yfpdm.c_str())); //已开负数金额 // m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[4], "ykfsje"); // memset(Buf, 0, sizeof(Buf)); // sprintf(Buf, "%ld", m_InvInfo.m_kphjje); // m_pXmlParse.GetText(Buf); // DBG_PRINT(("buf : %s", Buf)); m_pXmlParse.LocateNodeByName(m_pXmlParse.m_parentElement[2], "qmz"); m_InvInfo.m_casign = m_pXmlParse.GetText(); DBG_PRINT(("m_InvInfo.m_casign : %s", m_InvInfo.m_casign.c_str())); } return XML_SUCCESS; }