C#开发笔记之10-如何用C#根据发票代码判断发票种类?
本文由 比特飞 原创发布,欢迎大家踊跃转载。
转载请注明本文地址:C#开发笔记之10-如何用C#根据发票代码判断发票种类? | .Net中文网。
C#开发笔记概述
概述
发票代码是税务部门给予发票的编码。在查询发票真伪的时候,需要输入发票代码。普通发票,就是通常说的手工版发票代码为12位。增值税专用发票和增值税普通发票的代码原为10位,2018年1月1日开始,我国对增值税普通发票进行调整,新版增值税普通发票(折叠票)发票代码从10位调整为12位。
那么,如何使用C#根据发票代码判断发票种类呢?
解释
public static InvoiceType GetInvoiceType(string fapdm) {// 一些例外发票代码var someCode = new string[] { "144031539110", "131001570151", "133011501118", "111001571071" };if (someCode.Contains(fapdm)) {//增值税电子普通发票return InvoiceType.VatElectronicOrdinary;}if (fapdm.Length == 12) {if (fapdm.Substring(0, 1) == "0" && fapdm.Substring(10, 2) == "11") {//增值税电子普通发票return InvoiceType.VatElectronicOrdinary;}if (fapdm.Substring(0, 1) == "0" && fapdm.Substring(10, 2) == "12") {//货物运输业增值税普通发票return InvoiceType.VatFreightTransportOrdinary;}if (fapdm.Substring(0, 1) == "0" && (fapdm.Substring(10, 2) == "04" || fapdm.Substring(10, 2) == "05")) {//增值税普通发票return InvoiceType.VatOrdinary;}if (fapdm.Substring(0, 1) == "0" && (fapdm.Substring(10, 2) == "06" || fapdm.Substring(10, 2) == "07")) {//卷式普通发票return InvoiceType.VatVolumeOrdinary;}if (fapdm.Substring(0, 1) == "0" && fapdm.Substring(10, 2) == "17") {//二手车销售统一发票return InvoiceType.VatSecondHandMotor;}if (fapdm.Substring(0, 1) != "0" && fapdm.Substring(7, 1) == "2") {//机动车销售统一发票return InvoiceType.VatMotorSpecial;}}if (fapdm.Length == 10) {var b = fapdm.Substring(7, 1);if (b == "1" || b == "5") {//增值税专用发票return InvoiceType.VatSpecial;}if (b == "6" || b == "3") {//增值税普通发票return InvoiceType.VatOrdinary;}if (b == "7" || b == "2") {//货物运输业增值税专用发票return InvoiceType.VatFreightTransportSpecial;}}//未知发票return InvoiceType.UnKnow;
}
注:以上代码中的枚举未给出,请自行添加发票种类枚举。
本文由 比特飞 原创发布,欢迎大家踊跃转载。
转载请注明本文地址:C#开发笔记之10-如何用C#根据发票代码判断发票种类? | .Net中文网。
C#开发笔记之10-如何用C#根据发票代码判断发票种类?相关推荐
- ROS开发笔记(10)——ROS 深度强化学习dqn应用之tensorflow版本(double dqn/dueling dqn/prioritized replay dqn)
ROS开发笔记(10)--ROS 深度强化学习dqn应用之tensorflow版本(double dqn/dueling dqn/prioritized replay dqn) 在ROS开发笔记(9) ...
- 云炬Android开发笔记 5-9,10拦截器功能设计与实现
6.拦截器功能设计与实现之拦截器的初始化 [说明]没有搭建服务器,然后使用okhttp库中的拦截功能,将接收到请求之后做出响应,返回json文件: 6.1[配置文件中的拦截器的配置] 6.2 将配置文 ...
- Hololens 开发笔记(10)——World Anchor
Hololens 实现全息体验的一个特性就是场景保持.当用户离开场景或关闭应用时,场景中的全息图会被保存在所放置的位置,当用户回到场景或重新打开应用时,能够准确的还原之前场景内的全息内容. World ...
- C#开发笔记,点点细微,处处真情,记录开发中的痛点
该文章的最新版本已迁移至个人博客[比特飞],单击链接 C#开发笔记,点点细微,处处真情,记录开发中的痛点 | .Net中文网 访问. 概述 本系列文章将会向大家介绍本人实际开发过程中所遇到技术点和心得 ...
- C#开发笔记,点点细微,处处真情,记录开发中的难言之隐
该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/956 访问. 概述 本系列文章将会向大家介绍本人实际开发过程中所遇到技术 ...
- Linux高并发服务器开发---笔记2(多进程)
0630 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.2 Linux系统编程1.4.3 Linux系统编程2 4.4 多进程 1-9 10.进程间通信☆☆☆ 进程间 ...
- Linux高并发服务器开发---笔记4(网络编程)
0705 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.2 Linux系统编程1.4.3 Linux系统编程2 4.4 多进程 1-9 10.进程间通信☆☆☆ 4.5 ...
- Hololens 开发笔记(2)——Spatial Mapping
原文链接:Hololens 开发笔记(11)--Spatial Mapping_Jitwxs的博客-CSDN博客 Hololens 作为一款混合现实设备,其与传统 VR/AR 设备最大的区别是,能够和 ...
- C#开发笔记之18-如何用C#模拟(传统方法)发送Post请求或Get请求?
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#开发笔记之18-如何用C#模拟(传统方法)发送Post请求或Get请求? | .Net中文网. C#开发笔记概述 概述 HTTP ...
最新文章
- centos访问mysql_MySql 安装和访问(基于CentOS)
- UESTC 2015dp专题 E 菲波拉契数制 dp
- 向量笛卡尔积_如何创建向量的矢量的笛卡尔积?
- 中国35位“大国工匠”榜单出炉!西工大、西电合计占半壁江山!清华仅1人!...
- 网络知识 | 《图解TCP/IP》读书笔记(下)
- CSS 相对|绝对(relative/absolute)定位系列(三)
- 把数据或是numpy数据转换为keras张量
- 无法获得锁 /var/cache/apt/archives/lock – open (11 资源临时不可用)
- matlab 算法转 c语言,matlab
- html5 摇杆,分享一个虚拟摇杆,比较粗糙,没做优化
- dstwo linux 模拟器,dstwo md模拟器使用图文教程
- 什么是OEM ODM JDM OQM OBM?
- 从零开始搭建仿抖音短视频APP--开发用户业务模块(1)
- 机器学习 —— 支持向量机
- mysql 主库innodb从库myisam_MySQL的两种常用数据库存储引擎:MyISAM与InnoDB
- 远程桌面如何传递声音的原理
- 睡眠 应该用 a加权 c加权_创3年新高的创业板,应该如何选择
- “三门问题”背后的概率论原理解析
- EndNote参考文献管理
- 在vue项目中使用AntV L7地图下钻,异步调用不重复生成
热门文章
- LeetCode 459. Repeated Substring Pattern
- 【AI视野·今日Robot 机器人论文速览 第十四期】Thu, 24 Jun 2021
- Kubernetes-基本介绍/核心功能/相关术语(一)
- 课程目标 java 1615308884
- 案例 宠物医生给小动物看病 c# 1614100379
- 前端开发 简单表格的编写练习 0228
- 2020-python小工能
- python-正则表达式1909
- python-字符串数据类型-定义与输出
- InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十八)...