Xgm.go 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package CheckYbjc
  2. import (
  3. "git.listensoft.net/tool/jspkit/common"
  4. "git.listensoft.net/tool/jspkit/common/models"
  5. "git.listensoft.net/tool/jspkit/common/models/sb"
  6. "math"
  7. "reflect"
  8. "strings"
  9. )
  10. func CheckSmallVat(vat []sb.GsSmallVat, basevat []sb.GsSmallVat, hw bool) (status int, errLog string) {
  11. status = 1
  12. var errLogs []string
  13. // 强制校验
  14. {
  15. index1 := []string{"本期数-货物及劳务", "本期数-服务、不动产和无形资产", "本年累计-货物及劳务", "本年累计-服务、不动产和无形资产"}
  16. for k, v := range index1 {
  17. //if hw {
  18. // if k == 1 || k == 3 {
  19. // continue
  20. // }
  21. //} else {
  22. // if k == 0 || k == 2 {
  23. // continue
  24. // }
  25. //}
  26. if Tran(basevat[k].Yzzzsbhsxse) < Tran(vat[k].Yzzzsbhsxse) {
  27. errLogs = append(errLogs, v+"-应征增值税不含税销售额(3%征收率)不一致税局为:税局为"+vat[k].Yzzzsbhsxse+"系统为:"+basevat[k].Yzzzsbhsxse)
  28. }
  29. if Tran(basevat[k].Swjgdkdzzszyfpbhsxse) < Tran(vat[k].Swjgdkdzzszyfpbhsxse) {
  30. errLogs = append(errLogs, v+"-增值税专用发票不含税销售额:税局为"+vat[k].Swjgdkdzzszyfpbhsxse+"系统为:"+basevat[k].Swjgdkdzzszyfpbhsxse)
  31. }
  32. if Tran(basevat[k].Skqjkjdptfpbhsxse) < Tran(vat[k].Skqjkjdptfpbhsxse) {
  33. errLogs = append(errLogs, v+"-其他增值税发票不含税销售额:税局为"+vat[k].Skqjkjdptfpbhsxse+"系统为:"+basevat[k].Skqjkjdptfpbhsxse)
  34. }
  35. //if Tran(basevat[k].Xsczbdcbhsxse) != Tran(vat[k].Xsczbdcbhsxse) {
  36. // errLogs = append(errLogs, v+"-(二)应征增值税不含税销售额(5%征收率):税局为"+vat[k].Xsczbdcbhsxse+"系统为:"+basevat[k].Xsczbdcbhsxse)
  37. //}
  38. //if Tran(basevat[k].Swjgdkdzzszyfpbhsxse1) != Tran(vat[k].Swjgdkdzzszyfpbhsxse1) {
  39. // errLogs = append(errLogs, v+"-增值税专用发票不含税销售额:税局为"+vat[k].Swjgdkdzzszyfpbhsxse1+"系统为:"+basevat[k].Swjgdkdzzszyfpbhsxse1)
  40. //}
  41. //if Tran(basevat[k].Skqjkjdptfpbhsxse2) != Tran(vat[k].Skqjkjdptfpbhsxse2) {
  42. // errLogs = append(errLogs, v+"-其他增值税发票不含税销售额:税局为"+vat[k].Skqjkjdptfpbhsxse2+"系统为:"+basevat[k].Skqjkjdptfpbhsxse2)
  43. //}
  44. if Tran(basevat[k].Msxse) < Tran(vat[k].Msxse) {
  45. errLogs = append(errLogs, v+"-免税销售额:税局为"+vat[k].Msxse+"系统为:"+basevat[k].Msxse)
  46. }
  47. if Tran(basevat[k].Xwqymsxse) < Tran(vat[k].Xwqymsxse) {
  48. errLogs = append(errLogs, v+"-小微企业免税销售额:税局为"+vat[k].Xwqymsxse+"系统为:"+basevat[k].Xwqymsxse)
  49. }
  50. if Tran(basevat[k].Wdqzdxse) < Tran(vat[k].Wdqzdxse) {
  51. errLogs = append(errLogs, v+"-未达起征点免税销售额:税局为"+vat[k].Wdqzdxse+"系统为:"+basevat[k].Wdqzdxse)
  52. }
  53. if Tran(basevat[k].Qtmsxse) < Tran(vat[k].Qtmsxse) {
  54. errLogs = append(errLogs, v+"-其他免税销售额:税局为"+vat[k].Qtmsxse+"系统为:"+basevat[k].Qtmsxse)
  55. }
  56. if math.Abs(Tran(basevat[k].Bqynsejze)-Tran(vat[k].Bqynsejze)) > 0.5 { // 五毛误差
  57. errLogs = append(errLogs, v+"-本期应纳税额减征额:税局为"+vat[k].Bqynsejze+"系统为:"+basevat[k].Bqynsejze)
  58. }
  59. //if Tran(basevat[k].Bqmse) < Tran(vat[k].Bqmse) {
  60. // errLogs = append(errLogs, v+"-本期免税额:税局为"+vat[k].Bqmse+"系统为:"+basevat[k].Bqmse)
  61. //}
  62. //if Tran(basevat[k].Xwqymse) < Tran(vat[k].Xwqymse) {
  63. // errLogs = append(errLogs, v+"-小微企业免税额:税局为"+vat[k].Xwqymse+"系统为:"+basevat[k].Xwqymse)
  64. //}
  65. //if Tran(basevat[k].Wdqzdmse) < Tran(vat[k].Wdqzdmse) {
  66. // errLogs = append(errLogs, v+"-未达起征点免税额:税局为"+vat[k].Wdqzdmse+"系统为:"+basevat[k].Wdqzdmse)
  67. //}
  68. //if Tran(basevat[k].Bqybtse) != Tran(vat[k].Bqybtse) {
  69. // errLogs = append(errLogs, v+"-本期应补(退)税额:税局为"+vat[k].Bqybtse+"系统为:"+basevat[k].Bqybtse)
  70. //}
  71. //zaplog.LoggerS.Info(Tran(basevat[k].Cjs), Tran(vat[k].Cjs))
  72. //if Tran(basevat[k].Cjs) != Tran(vat[k].Cjs) {
  73. // errLogs = append(errLogs, v+"-城市维护建设税本期应补(退)税额:税局为"+vat[k].Cjs+"系统为:"+basevat[k].Cjs)
  74. //}
  75. //if Tran(basevat[k].Jyf) != Tran(vat[k].Jyf) {
  76. // errLogs = append(errLogs, v+"-教育费附加本期应补(退)费额:税局为"+vat[k].Jyf+"系统为:"+basevat[k].Jyf)
  77. //}
  78. //if Tran(basevat[k].Dfjyf) != Tran(vat[k].Dfjyf) {
  79. // errLogs = append(errLogs, v+"-地方教育附加本期应补(退)费额:税局为"+vat[k].Dfjyf+"系统为:"+basevat[k].Dfjyf)
  80. //}
  81. //if Tran(basevat[k].Bqyjse1) != Tran(vat[k].Bqyjse1) {
  82. // errLogs = append(errLogs, v+"本期预缴税额:税局为"+vat[k].Bqyjse1+"系统为:"+basevat[k].Bqyjse1)
  83. //}
  84. }
  85. }
  86. // 普通检验
  87. if len(errLogs) > 0 {
  88. status = 3
  89. errLog = strings.Join(errLogs, ",")
  90. }
  91. return status, errLog
  92. }
  93. func CheckSmallAttach2(Attach2 []models.GsVatFjs, baseAttach2 []models.GsVatFjs) (status int, errLog string) {
  94. status = 1
  95. // 非强制校验
  96. {
  97. var KeyNAme = []string{
  98. "Zzsse",
  99. "Bqybtse",
  100. }
  101. for _, v1 := range Attach2 {
  102. for _, v2 := range baseAttach2 {
  103. if v1.ZsxmDm == v2.ZsxmDm {
  104. r1 := reflect.ValueOf(v1)
  105. r2 := reflect.ValueOf(v2)
  106. for _, key_name := range KeyNAme {
  107. if common.StrToFloat(r1.FieldByName(key_name).String()) != common.StrToFloat(r2.FieldByName(key_name).String()) {
  108. status = 2
  109. break
  110. }
  111. }
  112. if status == 2 {
  113. break
  114. }
  115. }
  116. }
  117. if status == 2 {
  118. break
  119. }
  120. }
  121. }
  122. var errLogs []string
  123. if len(errLogs) > 0 {
  124. status = 3
  125. errLog = strings.Join(errLogs, ",")
  126. }
  127. return status, errLog
  128. }
  129. func CheckSmallJm(jm []sb.GsSmallVatReduce, Jm []sb.GsSmallVatReduce) (status int, errLog string) {
  130. status = 1
  131. var errLogs []string
  132. var jsxm1 []sb.GsSmallVatReduce
  133. for _, v := range jm {
  134. 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) {
  135. jsxm1 = append(jsxm1, v)
  136. }
  137. }
  138. var jsxm2 []sb.GsSmallVatReduce
  139. for _, v := range Jm {
  140. 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) {
  141. jsxm2 = append(jsxm2, v)
  142. }
  143. }
  144. // 非强制校验
  145. {
  146. // 减税项目
  147. if len(jsxm1) != len(jsxm2) {
  148. status = 2
  149. //errLogs = append(errLogs, fmt.Sprintf("税局减税项目有%d条系统有%d条", len(jsxm1), len(jsxm2)))
  150. }
  151. for _, v1 := range jsxm1 {
  152. find := false
  153. for _, v2 := range jsxm2 {
  154. if v1.SbJmxzdmJmHm == v2.SbJmxzdmJmHm {
  155. find = true
  156. 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) {
  157. status = 1
  158. } else {
  159. status = 2
  160. }
  161. break
  162. }
  163. }
  164. if !find {
  165. status = 2
  166. //errLogs = append(errLogs, fmt.Sprintf("税局减税项目:%s 为在系统中找到,请核实", len(jsxm1), len(jsxm2)))
  167. }
  168. }
  169. }
  170. if len(errLogs) > 0 {
  171. status = 3
  172. errLog = strings.Join(errLogs, ",")
  173. }
  174. return
  175. }
  176. func Tran(a string) float64 {
  177. if a == "" {
  178. return 0
  179. }
  180. return common.StrToFloat(strings.TrimSpace(strings.ReplaceAll(a, ",", "")))
  181. }