C#开发笔记之10-如何用C#根据发票代码判断发票种类?

C#开发笔记之10-如何用C#根据发票代码判断发票种类?

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;
}

注:以上代码中的枚举未给出,请自行添加发票种类枚举。

本文由 .Net中文网 原创发布,欢迎大家踊跃转载。

转载请注明本文地址:https://www.byteflying.com/archives/3137

发表评论

登录后才能评论