|
@@ -1,94 +1,173 @@
|
|
|
package controller
|
|
|
|
|
|
-import (
|
|
|
- "ElectronicInvoice/internal/service/tripartite"
|
|
|
- "github.com/gogf/gf/v2/errors/gerror"
|
|
|
- "github.com/gogf/gf/v2/frame/g"
|
|
|
- "github.com/gogf/gf/v2/net/ghttp"
|
|
|
- "github.com/gogf/gf/v2/util/gconv"
|
|
|
-)
|
|
|
-
|
|
|
-type (
|
|
|
- addInvoiceAddParam struct {
|
|
|
- OrderCode string `json:"Swno"` //orderCode订单号
|
|
|
- CustType string `json:"custType"` //购货方企业类型 01:企业 02:机关执业单位 03:个人 04:其他
|
|
|
- CustTaxNo string `json:"custTaxNo"` //纳税人税号
|
|
|
- Phone string `json:"phone"` //手机号
|
|
|
- BillDate string `json:"billDate"` //单据日期 格式:yyyy-MM-dd HH:mm:ss
|
|
|
- CustName string `json:"custName"` //购方名称
|
|
|
- Orders []*orders `json:"orders"` //发票内容
|
|
|
- }
|
|
|
-
|
|
|
- orders struct {
|
|
|
- BillNo string `json:"billNo"` //订单号
|
|
|
- Items []*items `json:"items"`
|
|
|
- }
|
|
|
-
|
|
|
- items struct {
|
|
|
- Name string `json:"name"` //商品名称
|
|
|
- Code string `json:"code"` //商品编号(税收分类编码)
|
|
|
- Yhzcbs string `json:"yhzcbs"` //享受税收优惠政策内容
|
|
|
- LineType string `json:"lineType"` //发票行性质 0:正常行1:折扣行2:被折扣行
|
|
|
- TaxRate string `json:"taxRate"` //税率
|
|
|
- TaxPrice string `json:"taxPrice"` //单价
|
|
|
- TotalAmount string `json:"totalAmount"` //含税金额
|
|
|
- Quantity string `json:"quantity"` //数量
|
|
|
- }
|
|
|
-
|
|
|
- addInvoiceAddResp struct {
|
|
|
- Code int `json:"code"` //0 开票成功;2 开票中 ;其他开票失败
|
|
|
- Msg interface{} `json:"msg,omitempty"`
|
|
|
- Data addInvoiceAddData `json:"data,omitempty"` //异步开票,通过回调通知
|
|
|
- }
|
|
|
- addInvoiceAddData struct {
|
|
|
- Swno string `json:"swno"` //流水号 invoice_serialnum
|
|
|
- Fpdm string `json:"fpdm"` //发票代码 invoice_code
|
|
|
- Fphm string `json:"fphm"` //发票号码 invoice_number
|
|
|
- Path string `json:"path"` //pdf地址 url
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
-// InvoiceAdd 开票
|
|
|
-func InvoiceAdd(r *ghttp.Request) {
|
|
|
- var param *addInvoiceAddParam
|
|
|
- err := func() error {
|
|
|
- err := gconv.Struct(r.GetBody(), param)
|
|
|
- if err != nil {
|
|
|
- return gerror.Wrap(err, "获取参数异常")
|
|
|
- }
|
|
|
- // 存入开票记录表
|
|
|
-
|
|
|
- // 调用第三方开票接口
|
|
|
- if err := tripartite.MakeSingleInvoice(tripartite.MakeInvoiceData{
|
|
|
- Type: "2",
|
|
|
- Gmfmc: param.CustName,
|
|
|
- Gmfnsrsbh: param.CustTaxNo,
|
|
|
- Id: param.OrderCode,
|
|
|
- //Gmfdz: "北京市朝阳区安定路5号院13号楼B座12层1201室",
|
|
|
- Lxdh: param.Phone,
|
|
|
- //Yhyywdmc: "郑州交通银行总行",
|
|
|
- //Yhzh: "6320123123000121",
|
|
|
- InvoiceArr: []tripartite.MakeInvoiceItems{{
|
|
|
- Xmmc: "0fccdac71c36a8552ba662e7a2f42726",
|
|
|
- WhStatus: 1,
|
|
|
- Je: param.Orders[0].Items[0].TaxPrice,
|
|
|
- Sl: "1",
|
|
|
- }},
|
|
|
- }); err != nil {
|
|
|
- return gerror.Wrapf(err, "调用开票接口异常%v", err)
|
|
|
- }
|
|
|
- return nil
|
|
|
- }()
|
|
|
- if err != nil {
|
|
|
- g.Log().Errorf(r.Context(), "处理开票业务异常")
|
|
|
- r.Response.Write(addInvoiceAddResp{
|
|
|
- Code: -1,
|
|
|
- Msg: err.Error(),
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- r.Response.Write(addInvoiceAddResp{
|
|
|
- Code: 0,
|
|
|
- Msg: "开票中",
|
|
|
- })
|
|
|
-}
|
|
|
+//
|
|
|
+//type (
|
|
|
+// addInvoiceAddParam struct {
|
|
|
+// OrderCode string `json:"Swno"` //orderCode订单号
|
|
|
+// CustType string `json:"custType"` //购货方企业类型 01:企业 02:机关执业单位 03:个人 04:其他
|
|
|
+// CustTaxNo string `json:"custTaxNo"` //纳税人税号
|
|
|
+// Phone string `json:"phone"` //手机号
|
|
|
+// BillDate string `json:"billDate"` //单据日期 格式:yyyy-MM-dd HH:mm:ss
|
|
|
+// CustName string `json:"custName"` //购方名称
|
|
|
+// Orders []*orders `json:"orders"` //发票内容
|
|
|
+// }
|
|
|
+//
|
|
|
+// orders struct {
|
|
|
+// BillNo string `json:"billNo"` //订单号
|
|
|
+// Items []*items `json:"items"`
|
|
|
+// }
|
|
|
+//
|
|
|
+// items struct {
|
|
|
+// Name string `json:"name"` //商品名称
|
|
|
+// Code string `json:"code"` //商品编号(税收分类编码)
|
|
|
+// Yhzcbs string `json:"yhzcbs"` //享受税收优惠政策内容
|
|
|
+// LineType string `json:"lineType"` //发票行性质 0:正常行1:折扣行2:被折扣行
|
|
|
+// TaxRate string `json:"taxRate"` //税率
|
|
|
+// TaxPrice string `json:"taxPrice"` //单价
|
|
|
+// TotalAmount string `json:"totalAmount"` //含税金额
|
|
|
+// Quantity string `json:"quantity"` //数量
|
|
|
+// }
|
|
|
+//
|
|
|
+// addInvoiceAddResp struct {
|
|
|
+// Code int `json:"code"` //0 开票成功;2 开票中 ;其他开票失败
|
|
|
+// Msg interface{} `json:"msg,omitempty"`
|
|
|
+// Data addInvoiceAddData `json:"data,omitempty"` //异步开票,通过回调通知
|
|
|
+// }
|
|
|
+// addInvoiceAddData struct {
|
|
|
+// Swno string `json:"swno"` //流水号 invoice_serialnum
|
|
|
+// Fpdm string `json:"fpdm"` //发票代码 invoice_code
|
|
|
+// Fphm string `json:"fphm"` //发票号码 invoice_number
|
|
|
+// Path string `json:"path"` //pdf地址 url
|
|
|
+// }
|
|
|
+//)
|
|
|
+//
|
|
|
+//// InvoiceAdd 开票
|
|
|
+//func InvoiceAdd(r *ghttp.Request) {
|
|
|
+// err := func() error {
|
|
|
+// haLogin, sessVal := service.GetJySessionVal(r)
|
|
|
+// if !haLogin {
|
|
|
+// return gerror.New("未登录")
|
|
|
+// }
|
|
|
+// var (
|
|
|
+// orderCode = r.Get("order_code").String()
|
|
|
+// invoiceType = r.Get("invoice_type").String() //个人 or 企业
|
|
|
+// mail = r.Get("email").String()
|
|
|
+// phoneNum = r.Get("phone_num").String()
|
|
|
+// companyName = r.Get("company").String() //公司名字
|
|
|
+// companyTaxNo = r.Get("id_num").String() //企业税号
|
|
|
+// userId = gconv.String(sessVal["userId"])
|
|
|
+// )
|
|
|
+// if (mail != "" || phoneNum != "" || orderCode != "") || (invoiceType == "企业" && (companyName == "" || companyTaxNo == "")) {
|
|
|
+// return gerror.New("缺少参数")
|
|
|
+// }
|
|
|
+// orderRes, err := g.DB().GetOne(r.Context(), "SELECT order_money,product_type,order_channel,pay_way,pay_money,is_backstage_order,billingMode FROM dataexport_order WHERE order_code=? AND user_id=? AND applyBill_status!=2", orderCode, userId)
|
|
|
+// if err != nil || orderRes.IsEmpty() {
|
|
|
+// g.Log().Errorf(r.Context(), "查询%d订单异常 err:%v", orderCode, err)
|
|
|
+// return gerror.New("未知订单")
|
|
|
+// }
|
|
|
+// if !(gconv.Int(orderRes["billingMode"]) == 1 && (gconv.Int(orderRes["is_backstage_order"]) != 1 || gconv.String(orderRes["order_channel"]) == "xdqd04")) {
|
|
|
+// return gerror.New("改订单不支持线上开票")
|
|
|
+// }
|
|
|
+// var (
|
|
|
+// prices float64
|
|
|
+// price = strconv.FormatFloat(prices, 'f', -1, 64)
|
|
|
+// product_name = gconv.String(orderRes["product_type"])
|
|
|
+// dataexport_data = map[string]interface{}{}
|
|
|
+// data = map[string]interface{}{}
|
|
|
+// )
|
|
|
+// //公对公转账 账单金额可以修改 开发票应取实付金额 pay_money
|
|
|
+// //微信支付宝支付 pay_money为订单金额减去微信or支付包红包
|
|
|
+// if gconv.String(orderRes["pay_way"]) == "transferAccounts" {
|
|
|
+// prices = gconv.Float64(orderRes["pay_money"]) / float64(100)
|
|
|
+// } else {
|
|
|
+// prices = gconv.Float64(orderRes["order_money"]) / float64(100)
|
|
|
+// }
|
|
|
+// dataexport_data["applyBill_status"] = 1
|
|
|
+// if invoiceType == "个人" {
|
|
|
+// dataexport_data["applyBill_type"] = 0
|
|
|
+// data["taxpayer_identnum"] = ""
|
|
|
+// data["company_name"] = ""
|
|
|
+// dataexport_data["applyBill_taxnum"] = ""
|
|
|
+// dataexport_data["applybill_company"] = ""
|
|
|
+// } else {
|
|
|
+// data["taxpayer_identnum"] = companyTaxNo
|
|
|
+// data["company_name"] = companyName
|
|
|
+// dataexport_data["applyBill_taxnum"] = companyTaxNo
|
|
|
+// dataexport_data["applybill_company"] = companyName
|
|
|
+// dataexport_data["applyBill_type"] = 1
|
|
|
+// }
|
|
|
+// dataexport_data["user_mail"] = mail
|
|
|
+//
|
|
|
+// data["product_type"] = product_name
|
|
|
+// data["order_code"] = orderCode
|
|
|
+// data["mail"] = mail
|
|
|
+// data["phone"] = phoneNum
|
|
|
+// data["invoice_type"] = invoiceType
|
|
|
+// data["invoice_changed"] = 0
|
|
|
+// data["create_time"] = time.Now().Unix()
|
|
|
+// data["user_id"] = userId
|
|
|
+// data["invoice_status"] = 0
|
|
|
+//
|
|
|
+// //g.DB().GetCount(r.Context(),"SELECT count(*) FROM invoice WHERE order_code=? and user_id=?",orderCode,userId)
|
|
|
+// //
|
|
|
+// //status := g.DB().(dbname, map[string]interface{}{"order_code": order_code, "user_id": userId}, "", "create_time", 0, 0)
|
|
|
+// //if len(*status) > 0 {
|
|
|
+// // return nil
|
|
|
+// //}
|
|
|
+// //util.Mysql.Insert(dbname, data)
|
|
|
+// //if !util.Mysql.Update("dataexport_order", map[string]interface{}{"order_code": order_code, "user_id": userId}, dataexport_data) {
|
|
|
+// // invoice_status = -1
|
|
|
+// //}
|
|
|
+// g.Dump(price)
|
|
|
+//
|
|
|
+// return nil
|
|
|
+// }()
|
|
|
+// if err != nil {
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+//}
|
|
|
+//
|
|
|
+//func InvoiceAdd222(r *ghttp.Request) {
|
|
|
+// var param *addInvoiceAddParam
|
|
|
+// err := func() error {
|
|
|
+// err := gconv.Struct(r.GetBody(), param)
|
|
|
+// if err != nil {
|
|
|
+// return gerror.Wrap(err, "获取参数异常")
|
|
|
+// }
|
|
|
+// // 存入开票记录表
|
|
|
+//
|
|
|
+// // 调用第三方开票接口
|
|
|
+// if err := tripartite.MakeSingleInvoice(tripartite.MakeInvoiceData{
|
|
|
+// Type: "2",
|
|
|
+// Gmfmc: param.CustName,
|
|
|
+// Gmfnsrsbh: param.CustTaxNo,
|
|
|
+// Id: param.OrderCode,
|
|
|
+// //Gmfdz: "北京市朝阳区安定路5号院13号楼B座12层1201室",
|
|
|
+// Lxdh: param.Phone,
|
|
|
+// //Yhyywdmc: "郑州交通银行总行",
|
|
|
+// //Yhzh: "6320123123000121",
|
|
|
+// InvoiceArr: []tripartite.MakeInvoiceItems{{
|
|
|
+// Xmmc: "0fccdac71c36a8552ba662e7a2f42726",
|
|
|
+// WhStatus: 1,
|
|
|
+// Je: param.Orders[0].Items[0].TaxPrice,
|
|
|
+// Sl: "1",
|
|
|
+// }},
|
|
|
+// }); err != nil {
|
|
|
+// return gerror.Wrapf(err, "调用开票接口异常%v", err)
|
|
|
+// }
|
|
|
+// return nil
|
|
|
+// }()
|
|
|
+// if err != nil {
|
|
|
+// g.Log().Errorf(r.Context(), "处理开票业务异常")
|
|
|
+// r.Response.Write(addInvoiceAddResp{
|
|
|
+// Code: -1,
|
|
|
+// Msg: err.Error(),
|
|
|
+// })
|
|
|
+// return
|
|
|
+// }
|
|
|
+// r.Response.Write(addInvoiceAddResp{
|
|
|
+// Code: 0,
|
|
|
+// Msg: "开票中",
|
|
|
+// })
|
|
|
+//}
|