当前位置: 首页 > ai >正文

python调用国税乐企直连接口开数电票之额度管理

背景

重写了一下乐企开票的额度管理,把下载/退回/额度有效期调整写到一个工具类里,方便其他接口在开票时额度不足,引入额度管理工具类实例化后来进行开票过程中的额度下载和调整有效期.

接口说明

下载发票额度

当企业本地的已下载未使用的发票额度小于需要开具的数电票的额度时,可通过此功能下载发票额度。
建议根据企业自身开票情况,对本地已下载未使用的发票额度设置阈值,当已下载未使用的发票额度小于设置的阈值时,自动触发下载发票额度操作。

退回发票额度

当企业需要在其他平台开具数电票,但是发票额度不足时,企业可通过此接口把下载到本地的发票额度退回至税务局端,以便企业在其他平台开具数电票时。

调整发票额度有效期

结合调整发票额度有效期接口,企业在月初未申报时下载的发票额度的有效期止为当月申报截止日期,超过发票额度有效期止后,无法开具数电票,企业在完成申报或到达发票额度有效期止后,通过此接口调整发票额度有效期,并根据税局端返回的有效期更新本地发票额度有效期。

序号接口名称服务编码
1下载或退回授信额度XZTHSXED
2调整授信额度有效期TZSXEDYXQ

发票额度即开票额度,用于控制企业开具数电票的总额度,国税要求企业自行管理每月数电票的发票额度,以下情况禁止使用发票额度。

  • 发票额度不在有效期内
  • 跨月使用
  • 开票总额度大于发票额度

直接上代码

#!/usr/bin/env python
# encoding: utf-8
# @author: Evan#chengwenit.com
# 乐企额度管理工具类
from lq_request_util import LQRequestUtil
from cjc_oracle_client import OracleDBClient
import cjc_cfg as cfg
import uuidclass LQInvoiceQuotaManager:"""乐企数电票额度管理类,用于处理额度查询、下载、退回、有效期调整等操作"""def __init__(self):self.requester = LQRequestUtil(base_url=cfg.url_front,headers=cfg.hjheaders,key=cfg.hjlqkey)self.db_client = OracleDBClient()def query_quota(self, taxpayer_id):"""查询企业可用发票额度"""try:# 定义请求数据request_data = {"nsrsbh": taxpayer_id}# 调用接口result = self.requester.post(cfg.url_after["sxed"], request_data, verify_ssl=False)if result.get("Data") is not None:if result["Data"]["returncode"] == '00':print("解密结果:", result)return resultexcept Exception as e:print("请求失败:", e)return Nonedef download_return_quota(self,jrdwptbh,sydwptbh,batch_id,taxno,ptbh,sqed,sqlx):"""下载/退回数电票额度"""try:self.db_client.connect()# 定义请求数据request_data = {"nsrsbh":taxno,"ptbh":ptbh,"sqlx":str(sqlx),"sqed":sqed,"ywlsh":jrdwptbh + sydwptbh +batch_id}# 调用接口result = self.requester.post(cfg.url_after["xzthed"], request_data, verify_ssl=False)if result.get("Data") is not None:if result["Data"]["returncode"] == '00':syqjq = result["Data"]["syqjq"]syqjz = result["Data"]["syqjz"]insertsql0 = f"""insert into cjc_lq_xzsxed_dtl(ywlsh,get_date,entityid,nsrsbh,ptbh,sqlx,sqed,syqjq,syqjz) values('{batch_id}',sysdate,1,'{taxno}','{ptbh}',{int(sqlx)},{sqed},to_date('{syqjq}','YYYYMMDD'),to_date('{syqjz}','YYYYMMDD'))"""self.db_client.execute_non_query(insertsql0) else:print(result)return resultexcept Exception as e:print("执行失败:", e)return Nonefinally:self.db_client.disconnect()def adjust_quota_validity(self, xsfnsrsbh, sxedsq):"""调整发票额度有效期 , 待验证.等申报期过后测试"""try:# 构建请求参数request_data = {"xsfnsrsbh": xsfnsrsbh,"sxedsq": sxedsq}# 调用接口,假设接口地址为 cfg.url_after["adjust_quota_validity"]result = self.requester.post(cfg.url_after["adjust_quota_validity"], request_data, verify_ssl=False)print("调整发票额度有效期结果:", result)return resultexcept Exception as e:print("调整发票额度有效期失败:", e)return Noneif __name__ == '__main__':lq_invoice_quota_manager = LQInvoiceQuotaManager()# 示例查询lq_invoice_quota_manager.query_quota("914601xxxxxxxxxxxx")# 示例下载# 生成业务流水号后缀batch_id = str(uuid.uuid4()).replace('-', '')print(batch_id)#lq_invoice_quota_manager.download_return_quota(cfg.hjheaders["jrdwptbh"],cfg.hjheaders["sydwptbh"],batch_id,cfg.hjxfxx["taxno"],cfg.hjheaders["jrdwptbh"],1000000.00,0)## 示例退回lq_invoice_quota_manager.download_return_quota(cfg.hjheaders["jrdwptbh"],cfg.hjheaders["sydwptbh"],batch_id,cfg.hjxfxx["taxno"],cfg.hjheaders["jrdwptbh"],10000000.00,1)## 示例调整有效期#lq_invoice_quota_manager.adjust_quota_validity("9146010062xxxxxxxx", "2024-01")

接口返回示例

请求参数

{
"nsrsbh": "纳税人识别号/统一社会信用代码",
"ptbh": "平台编号",
"sqlx": "申请类型",
"sqed": "申请额度",
"ywlsh": "业务流水号"
}

返回成功

{
"Response":{
"RequestId": "16位随机数字和字母组合",
"Data":{
"returncode": "00",
"returnmsg": "成功",
"syqjq": "发票额度使用区间起",
"syqjz": "发票额度使用区间止"
}
}
}

返回失败

{
"Response":{
"RequestId": "16位随机数字和字母组合",
"Error":{
"Code": "01,
"Message": "错误说明"
}
}
}
http://www.xdnf.cn/news/4842.html

相关文章:

  • transformer 笔记 tokenizer moe
  • 科技创业园共享会议室线上预约及智能密码锁系统搭建指南
  • FPGA实战项目2———多协议通信控制器
  • 学习黑客认识数字取证与事件响应(DFIR)
  • 安科瑞ADL3000-E-A/KC三相交流电能表CE认证导轨表
  • Spring AI 系列——使用大模型对文本内容分类归纳并标签化输出
  • React 中 useMemo 和 useEffect 的区别(计算与监听方面)
  • 传统销售VS智能销售:AI如何重构商业变现逻辑
  • Microsoft 365 Copilot:为Teams在线会议带来多语言语音交流新体验
  • 【计算机网络-传输层】传输层协议-TCP核心机制与可靠性保障
  • Ubuntu通过源码编译方式单独安装python3.12
  • 分享一款开源的图片去重软件 ImageContrastTools,基于Electron和hash算法
  • 二叉树的深度
  • 《被讨厌的勇气》书摘
  • JVM——即时编译
  • RabbitMQ-运维
  • 【C++设计模式之Observer观察者模式】
  • 5G让媒体传播更快更智能——技术赋能内容新时代
  • 深入详解人工智能数学基础——微积分中的微分方程在神经常微分方程(Neural ODE)中的应用
  • Vue3+ts复制图片到剪贴板
  • git相关
  • TB6600HG-富利威
  • k8s之statefulset
  • 养生:塑造健康生活的良方
  • 信赖域策略优化TRPO算法详解:python从零实现
  • Unity3D实现Render Streaming推送视频流的解决方案
  • Python爬虫(22)Python爬虫进阶:Scrapy框架动态页面爬取与高效数据管道设计
  • matlab转python
  • learning ray之ray强化学习/超参调优和数据处理
  • 出一期Source Insigned的使用教程