博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
extjs 调用金税COM接口
阅读量:7075 次
发布时间:2019-06-28

本文共 8559 字,大约阅读时间需要 28 分钟。

hot3.png

var kindObj = {};/** * 连接金税卡 * @param InfoKind 0:专用发票 1:废旧 物资发票 2:普通发票 * @private */function _kind_connect(InfoKind){    var cardInfo = {};    var self = this;    try {        self.kindObj=new ActiveXObject("TaxCardX.GoldTax");        self.kindObj.OpenCard();        if(self.kindObj.RetCode=="1011" || self.kindObj.RetCode=="3001"){            cardInfo.InvLimit = self.kindObj.InvLimit;//kai票限额, 金税卡发票开具价税合计限额            cardInfo.TaxCode = self.kindObj.TaxCode;//本单位税号            cardInfo.TaxClock = self.kindObj.TaxClock;//金税卡时钟            cardInfo.TaxClockStr =self._getDateStr(self.kindObj.TaxClock );//金税卡时钟            cardInfo.MachineNo = self.kindObj.MachineNo;//kai票机号码,主kai票机为 0            cardInfo.IsInvEmpty = self.kindObj.IsInvEmpty;//有票标志,0 为金税卡中无可开发票,1 为有票            cardInfo.IsInvEmptyStr = self.kindObj.IsInvEmpty==0?'否':'是';//有票标志,0 为金税卡中无可开发票,1 为有票            cardInfo.IsRepReached = self.kindObj.IsRepReached;//抄税标志,0 为未到抄税期,1 为已到抄税            cardInfo.IsRepReachedStr = self.kindObj.IsRepReached==0?'否':'是';//抄税标志,0 为未到抄税期,1 为已到抄税            cardInfo.IsLockReached = self.kindObj.IsLockReached;//锁死标志,0 为未到锁死期,1 为已到锁死期            cardInfo.IsLockReachedStr = self.kindObj.IsLockReachedStr==0?'否':'是';//锁死标志,0 为未到锁死期,1 为已到锁死期            self.kindObj.InfoKind=InfoKind;            cardInfo.InfoKindStr = InfoKind==0?'专用发票':'普通发票';//0:专用发票 1:废旧 物资发票 2:普通发票            self._kind_getinfo(cardInfo);            cardInfo.connectMsg = "金税卡已连接";        }else{            cardInfo.errMsg = ("金税卡开启失败,错误代码:"+self.kindObj.RetCode);        }    } catch (e) {        cardInfo.errMsg = ('ActiveX测试失败!'+e.description);    }    return cardInfo;}/** * 开具发票 * @param data 发票数据 * @private */function _kind_invoice(data){    var self = this;    var cardInfo ={};    var importValues =data;    cardInfo.noticeinvBillcode = importValues.noticeinvBillcode;    cardInfo.noticeinvBillcono = importValues.noticeinvBillcono;    cardInfo.memberCode = importValues.memberCode;    try {        var InfoKind = (importValues["ddTypeInvoiceclass"]) == '增值税专用发票'?0:2;        self.kindObj.InfoKind=InfoKind;        self.kindObj.GetInfo();        importValues.noticeinvTaxno = self.kindObj.InfoTypeCode;//发票代码        importValues.noticeinvTaxreceipt = self.kindObj.InfoNumber;//发票号码    } catch (e) {        cardInfo.errMsg = '发票查询失败!'+e.description;        return cardInfo;    }    //开具发票    try {        self.kindObj.InvInfoInit(); // 初始化发票抬头信息        self.kindObj.InfoKind = ((importValues["ddTypeInvoiceclass"]) == '增值税专用发票'?0:2); //增值税普通发票2 专票0        self.kindObj.InfoClientName = importValues["datasBalcorpname"]; //购方名称        self.kindObj.InfoClientTaxCode = importValues["companyTanu"]; //购方税号        self.kindObj.InfoClientBankAccount = importValues["companyAccountsName"]+importValues["companyAccountsCode"]; //购方开户行及账号        self.kindObj.InfoClientAddressPhone = importValues["companyAddr"]+importValues["companyPhone"]; //购方地址电话        self.kindObj.InfoSellerBankAccount = importValues["orgBankname"]+importValues["orgAccounts"]; //销方开户行及账号        self.kindObj.InfoSellerAddressPhone = importValues["orgAddr"]+importValues["orgPhone"]; //销方地址电话        self.kindObj.InfoNotes = ((importValues["invInvremark"])?importValues["invInvremark"]:''); //备注        self.kindObj.InfoInvoicer = ((importValues["operatorName"])?importValues["operatorName"]:''); //kai票人        self.kindObj.InfoChecker = ((importValues["billingCheckman"])?importValues["billingCheckman"]:''); //复核人,可为空        self.kindObj.InfoCashier = ((importValues["billingGatheringman"])?importValues["billingGatheringman"]:''); //收款人,可为空        if(importValues["goodsListFlag"] =="1"){            self.kindObj.InfoListName = '(详见销货清单)'; //如不为空,则开具销货清单,此为发票上商品名称栏的清单信息,应为“(详见销货清单)”字样        }        //kindObj.InfoBillNumber = ''; //销售单据编号,可为空        self.kindObj.ClearInvList(); //清空商品明细列表        var detailList = importValues["list"];        for(var i = 0 ;i< detailList.length; i++){            var item = detailList[i];            self.kindObj.InvListInit();            self.kindObj.ListGoodsName = item.noticeinvPartsname+ ( ((!item.goodsMaterial)|| item.goodsMaterial=='-') ?"":item.goodsMaterial); // 商品或劳务名称            //self.kindObj.ListTaxItem = item.taxCode; // 税目,4位数字,商品所属类别            self.kindObj.ListStandard = ((item.noticeinvSpec)?item.noticeinvSpec:''); // 规格型号            self.kindObj.ListUnit = ((item.partsnameWeightunit)?item.partsnameWeightunit:'');            self.kindObj.InfoTaxRate =  item.goodsTaxrate?(item.goodsTaxrate*100):0; //税率,17、13、6、4 等 如果是多商品多税率 税率应该放到商品循环里            // 计量单位,如计量单位为空,则忽略数量和单价            //建议传入数量和含税单价或含税金额 由接口计算带小数的税额 规避误差            if(item.dataBweight){                self.kindObj.ListNumber = ((item.dataBweight)?item.dataBweight:0); // 数量            }            //self.kindObj.ListPrice = item.goodsInprice; // 单价            self.kindObj.ListAmount=item.goodsExmoney;// 金额,可以不传(为0),由接口软件计算,如传入则应符合计算关系            self.kindObj.ListTaxAmount=item.goodsTaxmoney;//税额可以不传(为0),由接口软件计算,如传入则应符合计算关系            self.kindObj.ListPriceKind = 0; // 含税价标志,单价和金额的种类, 0为不含税价,1为含税价            self.kindObj.AddInvList();        }        self.kindObj.Invoice();        if(self.kindObj.RetCode=="4011"){            var mess="开具成功>>";            mess+=" 合计不含税金额:"+self.kindObj.InfoAmount;            mess+=" 合计税额:"+self.kindObj.InfoTaxAmount;            mess+=" 日期:"+self.kindObj.InfoDate;            mess+=" 月份:"+self.kindObj.InfoMonth;            mess+=" 代码:"+self.kindObj.InfoTypeCode;            mess+=" 号码:"+self.kindObj.InfoNumber;            mess+=" 清单:"+self.kindObj.GoodsListFlag;            mess+=" 单价:"+self.kindObj.ListPrice;            mess+=" 数量:"+self.kindObj.ListNumber;            mess+=" 商品编码:"+self.kindObj.ListNumber;            cardInfo.noticeinvTaxno = self.kindObj.InfoTypeCode;//发票代码            cardInfo.noticeinvTaxreceipt = self.kindObj.InfoNumber;//发票号码            cardInfo.invBillstate = 1;            cardInfo.kindInvoiceMsg = mess;        }else{            cardInfo.errMsg = ("kai票失败,错误代码:"+self.kindObj.RetCode);            cardInfo.kindInvoiceMsg =  cardInfo.errMsg ;        }    } catch (e) {        cardInfo.errMsg = '发票开具失败!'+e.description;        cardInfo.kindInvoiceMsg =  cardInfo.errMsg ;    }    return cardInfo;}//断开金税卡function _kind_close(){    var cardInfo = {};    var self = this;    try {        self.kindObj.CloseCard();        cardInfo.connectMsg = "金税卡已断开";    } catch (e) {        cardInfo.errMsg = ('关闭金税卡失败!'+e.description);    }    return cardInfo;}/** * 查询库存发票 * @param cardInfo 连接信息 * @returns {*} * @private */function _kind_getinfo(cardInfo){    if(!cardInfo){        cardInfo = {};    }    var self = this;    try {        self.kindObj.GetInfo();        cardInfo.InfoTypeCode = self.kindObj.InfoTypeCode;//要开具发票的十位代码        cardInfo.InfoNumber = self.kindObj.InfoNumber;//要开具发票的号码        cardInfo.InvStock = self.kindObj.InvStock;//发票剩余份数        cardInfo.InvStockStr = self.kindObj.InvStock+"张";//剩余发票        cardInfo.TaxClock = self.kindObj.TaxClock;//金税卡时钟    } catch (e) {        cardInfo.errMsg = ('金税卡查询库存发票失败!'+e.description);    }    return cardInfo;}/** * 作废发票 * @param InfoTypeCode 发票代码 * @param InfoNumber 发票号码 * @private */function _kind_cancelinv(InfoTypeCode,InfoNumber){    var cardInfo = {};    var self = this;    try {        self.kindObj.InfoTypeCode=InfoTypeCode;        self.kindObj.InfoNumber=InfoNumber;        self.kindObj.CancelInv();        if(self.kindObj.RetCode=="6011"){        }else{            cardInfo.errMsg = ("发票作废失败,错误代码:"+self.kindObj.RetCode);        }    } catch (e) {        cardInfo.errMsg = ('发票作废失败!'+e.description);    }    return cardInfo;}/** * 打印发票 * @param InfoTypeCode 发票代码 * @param InfoNumber 发票号码 * @param GoodsListFlag 销货清单标志,0 – 打印发票,1 – 打印销货清单 * @private */function _kind_printinv(InfoTypeCode,InfoNumber,GoodsListFlag){    var cardInfo = {};    var self = this;    try {        self.kindObj.InfoTypeCode=InfoTypeCode;        self.kindObj.InfoNumber=InfoNumber;        self.kindObj.GoodsListFlag=GoodsListFlag;        self.kindObj.PrintInv();        if(GoodsListFlag == 1){ //清单打印两次            if(self.kindObj.RetCode!="5012"){                self.kindObj.PrintInv();            }        }        if(self.kindObj.RetCode=="5011"||self.kindObj.RetCode=="5012"){            cardInfo.RetCode = self.kindObj.RetCode;        }else{            cardInfo.errMsg = ("发票打印失败,错误代码:"+self.kindObj.RetCode);        }    } catch (e) {        cardInfo.errMsg = ('发票打印失败!'+e.description);    }    return cardInfo;}

 

转载于:https://my.oschina.net/u/1767754/blog/3026142

你可能感兴趣的文章
linux下syslog使用说明
查看>>
机器学习---学习首页
查看>>
smarty详解二:从文件读取变量、保留变量、数学计算、内建函数
查看>>
java 多线程简介
查看>>
SQLSserver2008安装默认账户介绍
查看>>
MySQL:NULL?
查看>>
mysql select 结果集循环
查看>>
django返回json的几种方法以及android调用
查看>>
利用JavaScript全选、反选复选按钮
查看>>
js 键盘码对应表
查看>>
MogileFS安装配置实战
查看>>
Java Concurrency(一)
查看>>
centos 7更改网卡名字
查看>>
安装gitlab
查看>>
本季度学习内容
查看>>
Android 权限大全中英对照
查看>>
动态素组(ArrayList)
查看>>
linux下部署tomcat指定JDK版本编译并运行javaWEB应用
查看>>
drbd+corosync+pacemaker实现mysql的高可用性“下”
查看>>
TCP协议中FLAG的含义
查看>>