发布时间:2025-12-09 18:52:00 浏览次数:4
2019独角兽企业重金招聘Python工程师标准>>>
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票机为 0cardInfo.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 专票0self.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