如何使用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;
}

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

posted @ 2021-02-20 16:30  imnet  阅读(560)  评论(0)    收藏  举报