Browse Source

feature(*): 1、首页增加当年已开票金额统计
2、项目详情中发票信息新建发票增加开票信息填写,修改审批流表单信息增加开票信息

likai 2 years ago
parent
commit
54adc87360

+ 15 - 0
opms_parent/app/dao/contract/internal/ctr_contract_invoice.go

@@ -42,6 +42,11 @@ type ctrContractInvoiceColumns struct {
 	InvoiceCode       string // 发票号码
 	ActualInvoiceDate string // 实际开票日期
 	CourierCode       string // 快递单号
+	TaxNo             string // 税号
+	Address           string // 开票地址
+	Phone             string // 开票电话
+	Bank              string // 开户行
+	AccountNo         string // 账号
 	Remark            string // 备注
 	CreatedBy         string // 创建者
 	CreatedName       string // 创建人
@@ -72,6 +77,11 @@ var (
 			InvoiceCode:       "invoice_code",
 			ActualInvoiceDate: "actual_invoice_date",
 			CourierCode:       "courier_code",
+			TaxNo:             "tax_no",
+			Address:           "address",
+			Phone:             "phone",
+			Bank:              "bank",
+			AccountNo:         "account_no",
 			Remark:            "remark",
 			CreatedBy:         "created_by",
 			CreatedName:       "created_name",
@@ -104,6 +114,11 @@ func NewCtrContractInvoiceDao(tenant string) CtrContractInvoiceDao {
 			InvoiceCode:       "invoice_code",
 			ActualInvoiceDate: "actual_invoice_date",
 			CourierCode:       "courier_code",
+			TaxNo:             "tax_no",
+			Address:           "address",
+			Phone:             "phone",
+			Bank:              "bank",
+			AccountNo:         "account_no",
 			Remark:            "remark",
 			CreatedBy:         "created_by",
 			CreatedName:       "created_name",

+ 21 - 11
opms_parent/app/model/contract/ctr_contract_invoice.go

@@ -41,10 +41,15 @@ type CtrContractInvoiceAddReq struct {
 	InvoiceDate   *gtime.Time `json:"invoiceDate"`   // 开票日期
 	InvoiceType   string      `json:"invoiceType"`   // 开票类型
 	// ApproStatus       string      `json:"approStatus"`       // 审核状态 10 未通过 20 已通过
-	InvoiceCode       string      `json:"invoiceCode"`       // 发票号码
-	ActualInvoiceDate *gtime.Time `json:"actualInvoiceDate"` // 实际开票日期
-	CourierCode       string      `json:"courierCode"`       // 快递单号
-	Remark            string      `json:"remark"`            // 备注
+	InvoiceCode       string      `json:"invoiceCode"`                   // 发票号码
+	ActualInvoiceDate *gtime.Time `json:"actualInvoiceDate"`             // 实际开票日期
+	CourierCode       string      `json:"courierCode"`                   // 快递单号
+	TaxNo             string      `json:"taxNo"  v:"required#税号为空"`  // 税号
+	Address           string      `json:"address" v:"required#地址为空"` // 开票地址
+	Phone             string      `json:"phone"  v:"required#电话为空"`  // 开票电话
+	Bank              string      `json:"bank" `                         // 开户行
+	AccountNo         string      `json:"accountNo"  `                   // 账号
+	Remark            string      `json:"remark"`                        // 备注
 }
 
 type CtrContractInvoiceUpdateReq struct {
@@ -54,13 +59,18 @@ type CtrContractInvoiceUpdateReq struct {
 	// ContractId        int         `json:"contractId"`        // 关联合同
 	// ContractCode      string      `json:"contractCode"`      // 合同编号
 	// ContractAmount    float64     `json:"contractAmount"`    // 合同金额
-	InvoiceAmount     *float64    `json:"invoiceAmount"`     // 开票金额
-	InvoiceDate       *gtime.Time `json:"invoiceDate"`       // 开票日期
-	InvoiceType       string      `json:"invoiceType"`       // 开票类型
-	ApproStatus       string      `json:"approStatus"`       // 审核状态 10 未通过 20 已通过
-	InvoiceCode       string      `json:"invoiceCode"`       // 发票号码
-	ActualInvoiceDate *gtime.Time `json:"actualInvoiceDate"` // 实际开票日期
-	CourierCode       string      `json:"courierCode"`       // 快递单号
+	InvoiceAmount     *float64    `json:"invoiceAmount"`                 // 开票金额
+	InvoiceDate       *gtime.Time `json:"invoiceDate"`                   // 开票日期
+	InvoiceType       string      `json:"invoiceType"`                   // 开票类型
+	ApproStatus       string      `json:"approStatus"`                   // 审核状态 10 未通过 20 已通过
+	InvoiceCode       string      `json:"invoiceCode"`                   // 发票号码
+	ActualInvoiceDate *gtime.Time `json:"actualInvoiceDate"`             // 实际开票日期
+	CourierCode       string      `json:"courierCode"`                   // 快递单号
+	TaxNo             string      `json:"taxNo"  v:"required#税号为空"`  // 税号
+	Address           string      `json:"address" v:"required#地址为空"` // 开票地址
+	Phone             string      `json:"phone"  v:"required#电话为空"`  // 开票电话
+	Bank              string      `json:"bank" `                         // 开户行
+	AccountNo         string      `json:"accountNo"  `                   // 账号
 	Remark            *string     `json:"remark"`
 }
 

+ 5 - 0
opms_parent/app/model/contract/internal/ctr_contract_invoice.go

@@ -23,6 +23,11 @@ type CtrContractInvoice struct {
 	InvoiceCode       string      `orm:"invoice_code"        json:"invoiceCode"`       // 发票号码
 	ActualInvoiceDate *gtime.Time `orm:"actual_invoice_date" json:"actualInvoiceDate"` // 实际开票日期
 	CourierCode       string      `orm:"courier_code"        json:"courierCode"`       // 快递单号
+	TaxNo             string      `orm:"tax_no"              json:"taxNo"`             // 税号
+	Address           string      `orm:"address"             json:"address"`           // 开票地址
+	Phone             string      `orm:"phone"               json:"phone"`             // 开票电话
+	Bank              string      `orm:"bank"                json:"bank"`              // 开户行
+	AccountNo         string      `orm:"account_no"          json:"accountNo"`         // 账号
 	Remark            string      `orm:"remark"              json:"remark"`            // 备注
 	CreatedBy         int         `orm:"created_by"          json:"createdBy"`         // 创建者
 	CreatedName       string      `orm:"created_name"        json:"createdName"`       // 创建人

+ 49 - 1
opms_parent/app/service/contract/ctr_contract_invoice.go

@@ -171,6 +171,11 @@ func (s CtrContractInvoiceService) Add(ctx context.Context, req *model.CtrContra
 		InvoiceCode:       req.InvoiceCode,
 		ActualInvoiceDate: req.ActualInvoiceDate,
 		CourierCode:       req.CourierCode,
+		TaxNo:             req.TaxNo,
+		Address:           req.Address,
+		Phone:             req.Phone,
+		Bank:              req.Bank,
+		AccountNo:         req.AccountNo,
 		Remark:            req.Remark,
 		CreatedBy:         int(s.userInfo.Id),
 		CreatedName:       s.userInfo.NickName,
@@ -273,8 +278,23 @@ func (s CtrContractInvoiceService) Update(ctx context.Context, req *model.CtrCon
 	if req.CourierCode != "" {
 		toupdate["courier_code"] = req.CourierCode
 	}
+	if req.TaxNo != "" {
+		toupdate["tax_no"] = req.TaxNo
+	}
+	if req.Address != "" {
+		toupdate["address"] = req.Address
+	}
+	if req.Phone != "" {
+		toupdate["phone"] = req.Phone
+	}
+	if req.Bank != "" {
+		toupdate["bank"] = req.Bank
+	}
+	if req.AccountNo != "" {
+		toupdate["account_no"] = req.AccountNo
+	}
 	if req.Remark != nil {
-		toupdate["remark"] = *req.Remark
+		toupdate["phone"] = *req.Remark
 	}
 	if len(toupdate) != 0 {
 		toupdate["updated_by"] = int(s.userInfo.Id)
@@ -393,6 +413,14 @@ func (s CtrContractInvoiceService) InvoiceApply(ctx context.Context, req *model.
 		strconv.Itoa(invoice.Id),
 		strconv.Itoa(s.userInfo.Id),
 	}, ":")
+	bankAndAccount := invoice.Bank
+	if invoice.AccountNo != "" {
+		if bankAndAccount == "" {
+			bankAndAccount += invoice.AccountNo
+		} else {
+			bankAndAccount += "、" + invoice.AccountNo
+		}
+	}
 	_, err = workflowSrv.StartProcessInstance(bizCode, "31", "", &workflow.StartProcessInstanceRequest{
 		ProcessCode: &InvoiceApplyProcessCode,
 		FormComponentValues: []*workflow.StartProcessInstanceRequestFormComponentValues{
@@ -437,6 +465,26 @@ func (s CtrContractInvoiceService) InvoiceApply(ctx context.Context, req *model.
 				Name:  utils.String("开票金额(元)"),
 				Value: utils.String(strconv.FormatFloat(invoice.InvoiceAmount, 'f', 2, 64)),
 			},
+			{
+				Id:    utils.String("TextField_1Z4M0MOV8T9C0"),
+				Name:  utils.String("税号"),
+				Value: utils.String(invoice.TaxNo),
+			},
+			{
+				Id:    utils.String("TextField_Z1KCAYC186O0"),
+				Name:  utils.String("地址、电话"),
+				Value: utils.String(invoice.Address + "、" + invoice.Phone),
+			},
+			{
+				Id:    utils.String("TextField_212KJ2MPKX340"),
+				Name:  utils.String("开户行、账号"),
+				Value: utils.String(bankAndAccount),
+			},
+			{
+				Id:    utils.String("TextField_7OR3HRJCW100"),
+				Name:  utils.String("备注"),
+				Value: utils.String(invoice.Remark),
+			},
 		},
 	})
 	if err != nil {

+ 6 - 1
opms_parent/app/service/home/home.go

@@ -95,7 +95,7 @@ func (s *HomeService) QueryHomeDataReportData(param *home.SearchDataReportData)
 // 20000-30000之间:报表数据 TODO 疑似与 sys_report 表对应?
 func (s *HomeService) getReportData(id int64, params *map[string]interface{}) (interface{}, error) {
 	switch id {
-	case 10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10015, 10016, 10017, 10018, 10019, 10020:
+	case 10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10015, 10016, 10017, 10018, 10019, 10020, 10021:
 		// 获取数值指标统计数据
 		return s.getNumStatisticsData(id, params)
 	case 20000:
@@ -258,6 +258,11 @@ func (s *HomeService) getNumStatisticsData(id int64, params *map[string]interfac
 	case 10020: //项目来源为招标信息转化
 		count, err := businessDao.Where("bid_id<>0").Count()
 		return gconv.String(count), err
+
+	case 10021: //当年的已开票金额(维度:年)
+		count, err := contractDao.DataScope(s.Ctx, "incharge_id").WhereGTE(contractDao.C.ContractStartTime, yearStart).WhereLTE(contractDao.C.ContractStartTime, yearEnd).
+			Sum(contractDao.C.InvoiceAmount)
+		return gconv.String(count), err
 	}
 	return "", nil
 }

+ 5 - 0
opms_parent/schema/contract.sql

@@ -111,6 +111,11 @@ CREATE TABLE `ctr_contract_invoice` (
     `invoice_code` varchar(32) DEFAULT NULL COMMENT '发票号码',
     `actual_invoice_date` datetime DEFAULT NULL COMMENT '实际开票日期',
     `courier_code` varchar(32) DEFAULT NULL COMMENT '快递单号',
+    `tax_no` varchar(90) NOT NULL COMMENT '税号',
+    `address` varchar(255) DEFAULT NULL COMMENT '开票地址',
+    `phone` varchar(32) DEFAULT NULL COMMENT '开票电话',
+    `bank` varchar(90) DEFAULT NULL COMMENT '开户行',
+    `account_no` varchar(90) DEFAULT NULL COMMENT '账号',
     `remark` text DEFAULT NULL COMMENT '备注',
     `created_by` int(11) NOT NULL COMMENT '创建者',
     `created_name` varchar(90) NOT NULL COMMENT '创建人',