package CheckYbjc import ( "git.listensoft.net/tool/jspkit/common" "git.listensoft.net/tool/jspkit/common/models" "git.listensoft.net/tool/jspkit/common/models/sb" "math" "reflect" "strings" ) func CheckSmallVat(vat []sb.GsSmallVat, basevat []sb.GsSmallVat, hw bool) (status int, errLog string) { status = 1 var errLogs []string // 强制校验 { index1 := []string{"本期数-货物及劳务", "本期数-服务、不动产和无形资产", "本年累计-货物及劳务", "本年累计-服务、不动产和无形资产"} for k, v := range index1 { //if hw { // if k == 1 || k == 3 { // continue // } //} else { // if k == 0 || k == 2 { // continue // } //} if Tran(basevat[k].Yzzzsbhsxse) < Tran(vat[k].Yzzzsbhsxse) { errLogs = append(errLogs, v+"-应征增值税不含税销售额(3%征收率)不一致税局为:税局为"+vat[k].Yzzzsbhsxse+"系统为:"+basevat[k].Yzzzsbhsxse) } if Tran(basevat[k].Swjgdkdzzszyfpbhsxse) < Tran(vat[k].Swjgdkdzzszyfpbhsxse) { errLogs = append(errLogs, v+"-增值税专用发票不含税销售额:税局为"+vat[k].Swjgdkdzzszyfpbhsxse+"系统为:"+basevat[k].Swjgdkdzzszyfpbhsxse) } if Tran(basevat[k].Skqjkjdptfpbhsxse) < Tran(vat[k].Skqjkjdptfpbhsxse) { errLogs = append(errLogs, v+"-其他增值税发票不含税销售额:税局为"+vat[k].Skqjkjdptfpbhsxse+"系统为:"+basevat[k].Skqjkjdptfpbhsxse) } //if Tran(basevat[k].Xsczbdcbhsxse) != Tran(vat[k].Xsczbdcbhsxse) { // errLogs = append(errLogs, v+"-(二)应征增值税不含税销售额(5%征收率):税局为"+vat[k].Xsczbdcbhsxse+"系统为:"+basevat[k].Xsczbdcbhsxse) //} //if Tran(basevat[k].Swjgdkdzzszyfpbhsxse1) != Tran(vat[k].Swjgdkdzzszyfpbhsxse1) { // errLogs = append(errLogs, v+"-增值税专用发票不含税销售额:税局为"+vat[k].Swjgdkdzzszyfpbhsxse1+"系统为:"+basevat[k].Swjgdkdzzszyfpbhsxse1) //} //if Tran(basevat[k].Skqjkjdptfpbhsxse2) != Tran(vat[k].Skqjkjdptfpbhsxse2) { // errLogs = append(errLogs, v+"-其他增值税发票不含税销售额:税局为"+vat[k].Skqjkjdptfpbhsxse2+"系统为:"+basevat[k].Skqjkjdptfpbhsxse2) //} if Tran(basevat[k].Msxse) < Tran(vat[k].Msxse) { errLogs = append(errLogs, v+"-免税销售额:税局为"+vat[k].Msxse+"系统为:"+basevat[k].Msxse) } if Tran(basevat[k].Xwqymsxse) < Tran(vat[k].Xwqymsxse) { errLogs = append(errLogs, v+"-小微企业免税销售额:税局为"+vat[k].Xwqymsxse+"系统为:"+basevat[k].Xwqymsxse) } if Tran(basevat[k].Wdqzdxse) < Tran(vat[k].Wdqzdxse) { errLogs = append(errLogs, v+"-未达起征点免税销售额:税局为"+vat[k].Wdqzdxse+"系统为:"+basevat[k].Wdqzdxse) } if Tran(basevat[k].Qtmsxse) < Tran(vat[k].Qtmsxse) { errLogs = append(errLogs, v+"-其他免税销售额:税局为"+vat[k].Qtmsxse+"系统为:"+basevat[k].Qtmsxse) } if math.Abs(Tran(basevat[k].Bqynsejze)-Tran(vat[k].Bqynsejze)) > 0.5 { // 五毛误差 errLogs = append(errLogs, v+"-本期应纳税额减征额:税局为"+vat[k].Bqynsejze+"系统为:"+basevat[k].Bqynsejze) } //if Tran(basevat[k].Bqmse) < Tran(vat[k].Bqmse) { // errLogs = append(errLogs, v+"-本期免税额:税局为"+vat[k].Bqmse+"系统为:"+basevat[k].Bqmse) //} //if Tran(basevat[k].Xwqymse) < Tran(vat[k].Xwqymse) { // errLogs = append(errLogs, v+"-小微企业免税额:税局为"+vat[k].Xwqymse+"系统为:"+basevat[k].Xwqymse) //} //if Tran(basevat[k].Wdqzdmse) < Tran(vat[k].Wdqzdmse) { // errLogs = append(errLogs, v+"-未达起征点免税额:税局为"+vat[k].Wdqzdmse+"系统为:"+basevat[k].Wdqzdmse) //} //if Tran(basevat[k].Bqybtse) != Tran(vat[k].Bqybtse) { // errLogs = append(errLogs, v+"-本期应补(退)税额:税局为"+vat[k].Bqybtse+"系统为:"+basevat[k].Bqybtse) //} //zaplog.LoggerS.Info(Tran(basevat[k].Cjs), Tran(vat[k].Cjs)) //if Tran(basevat[k].Cjs) != Tran(vat[k].Cjs) { // errLogs = append(errLogs, v+"-城市维护建设税本期应补(退)税额:税局为"+vat[k].Cjs+"系统为:"+basevat[k].Cjs) //} //if Tran(basevat[k].Jyf) != Tran(vat[k].Jyf) { // errLogs = append(errLogs, v+"-教育费附加本期应补(退)费额:税局为"+vat[k].Jyf+"系统为:"+basevat[k].Jyf) //} //if Tran(basevat[k].Dfjyf) != Tran(vat[k].Dfjyf) { // errLogs = append(errLogs, v+"-地方教育附加本期应补(退)费额:税局为"+vat[k].Dfjyf+"系统为:"+basevat[k].Dfjyf) //} //if Tran(basevat[k].Bqyjse1) != Tran(vat[k].Bqyjse1) { // errLogs = append(errLogs, v+"本期预缴税额:税局为"+vat[k].Bqyjse1+"系统为:"+basevat[k].Bqyjse1) //} } } // 普通检验 if len(errLogs) > 0 { status = 3 errLog = strings.Join(errLogs, ",") } return status, errLog } func CheckSmallAttach2(Attach2 []models.GsVatFjs, baseAttach2 []models.GsVatFjs) (status int, errLog string) { status = 1 // 非强制校验 { var KeyNAme = []string{ "Zzsse", "Bqybtse", } for _, v1 := range Attach2 { for _, v2 := range baseAttach2 { if v1.ZsxmDm == v2.ZsxmDm { r1 := reflect.ValueOf(v1) r2 := reflect.ValueOf(v2) for _, key_name := range KeyNAme { if common.StrToFloat(r1.FieldByName(key_name).String()) != common.StrToFloat(r2.FieldByName(key_name).String()) { status = 2 break } } if status == 2 { break } } } if status == 2 { break } } } var errLogs []string if len(errLogs) > 0 { status = 3 errLog = strings.Join(errLogs, ",") } return status, errLog } func CheckSmallJm(jm []sb.GsSmallVatReduce, Jm []sb.GsSmallVatReduce) (status int, errLog string) { status = 1 var errLogs []string var jsxm1 []sb.GsSmallVatReduce for _, v := range jm { if v.Type == 1 && (common.StrToFloat(v.Qcye) != 0 || common.StrToFloat(v.Qmye) != 0 || common.StrToFloat(v.Bqfse) != 0 || common.StrToFloat(v.Bqydjse) != 0 || common.StrToFloat(v.Bqsjdjse) != 0) { jsxm1 = append(jsxm1, v) } } var jsxm2 []sb.GsSmallVatReduce for _, v := range Jm { if v.Type == 1 && (common.StrToFloat(v.Qcye) != 0 || common.StrToFloat(v.Qmye) != 0 || common.StrToFloat(v.Bqfse) != 0 || common.StrToFloat(v.Bqydjse) != 0 || common.StrToFloat(v.Bqsjdjse) != 0) { jsxm2 = append(jsxm2, v) } } // 非强制校验 { // 减税项目 if len(jsxm1) != len(jsxm2) { status = 2 //errLogs = append(errLogs, fmt.Sprintf("税局减税项目有%d条系统有%d条", len(jsxm1), len(jsxm2))) } for _, v1 := range jsxm1 { find := false for _, v2 := range jsxm2 { if v1.SbJmxzdmJmHm == v2.SbJmxzdmJmHm { find = true if common.StrToFloat(v1.Qcye) == common.StrToFloat(v2.Qcye) && common.StrToFloat(v1.Qmye) == common.StrToFloat(v2.Qmye) && common.StrToFloat(v1.Bqfse) == common.StrToFloat(v2.Bqfse) && common.StrToFloat(v1.Bqydjse) == common.StrToFloat(v2.Bqydjse) { status = 1 } else { status = 2 } break } } if !find { status = 2 //errLogs = append(errLogs, fmt.Sprintf("税局减税项目:%s 为在系统中找到,请核实", len(jsxm1), len(jsxm2))) } } } if len(errLogs) > 0 { status = 3 errLog = strings.Join(errLogs, ",") } return } func Tran(a string) float64 { if a == "" { return 0 } return common.StrToFloat(strings.TrimSpace(strings.ReplaceAll(a, ",", ""))) }