ziwen 2 年之前
父節點
當前提交
af77c7a36e
共有 4 個文件被更改,包括 125 次插入8 次删除
  1. 98 1
      controller/contract/pre_register.go
  2. 1 0
      models/fms/contract_pre_payment.go
  3. 25 7
      models/fms/contract_pre_register.go
  4. 1 0
      routers/contract.go

+ 98 - 1
controller/contract/pre_register.go

@@ -292,6 +292,7 @@ func (rg *PreRegisterController) Add(c *gin.Context) {
 		pp.Set()
 		if pp.InvoiceType == fms.ContractInvoiceTypePreMake {
 			//开票走开票字段
+			pp.InvoiceId = v.ContractInvoiceId
 			pp.InvoiceDate = registerDate
 			pp.OriginAmount = r.Amount
 			pp.CurrencyUnit = r.CurrencyUnit
@@ -312,6 +313,7 @@ func (rg *PreRegisterController) Add(c *gin.Context) {
 			pp.SellerTeamName = sellerItem.TeamName
 		} else {
 			//到款
+			pp.ArriveId = v.ContractInvoiceId
 			pp.ArriveDate = registerDate
 			pp.ArriveOriginAmount = r.Amount
 			pp.ArriveCurrencyUnit = r.CurrencyUnit
@@ -433,6 +435,7 @@ func (rg *PreRegisterController) Edit(c *gin.Context) {
 	}
 
 	invoiceList := make([]*fms.ContractInvoice, 0)
+	ppList := make([]*fms.ContractPreRegister, 0)
 	for _, r := range req.List {
 		// 货币及汇率
 		rateList, e := fmsService.GetTodayCurrencyRateList()
@@ -494,6 +497,53 @@ func (rg *PreRegisterController) Edit(c *gin.Context) {
 		}
 
 		invoiceList = append(invoiceList, v)
+
+		//预登记列表
+		pp := &fms.ContractPreRegister{
+			ContractRegisterId: ob.ContractRegisterId,
+			CompanyName:        req.CompanyName,
+			InvoiceType:        req.RegisterType,
+			InvoiceDate:        registerDate,
+			AdminId:            int(adminInfo.AdminId),
+			AdminName:          adminInfo.AdminName,
+			Remark:             r.Remark,
+			ServiceProductId:   r.ServiceProductId,
+			IsPrePay:           1,
+			StartDate:          startDate,
+			EndDate:            endDate,
+			TimeBase:           base.TimeBase{},
+		}
+		pp.Set()
+		if pp.InvoiceType == fms.ContractInvoiceTypePreMake {
+			//开票走开票字段
+			pp.InvoiceDate = registerDate
+			pp.OriginAmount = r.Amount
+			pp.CurrencyUnit = r.CurrencyUnit
+			a, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", pp.OriginAmount/rate), 64)
+			pp.Amount = a
+
+			sellerItem := sellerMap[r.SellerId]
+			if sellerItem == nil {
+				resp.Fail("销售信息异常", c)
+				return
+			}
+
+			pp.SellerId = sellerItem.SellerId
+			pp.SellerName = sellerItem.SellerName
+			pp.SellerGroupId = sellerItem.GroupId
+			pp.SellerGroupName = sellerItem.GroupName
+			pp.SellerTeamId = sellerItem.TeamId
+			pp.SellerTeamName = sellerItem.TeamName
+		} else {
+			//到款
+			pp.ArriveDate = registerDate
+			pp.ArriveOriginAmount = r.Amount
+			pp.ArriveCurrencyUnit = r.CurrencyUnit
+			a, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", pp.ArriveOriginAmount/rate), 64)
+			pp.ArriveAmount = a
+		}
+		ppList = append(ppList, pp)
+
 	}
 	invoiceUpdateCols := []string{
 		"CurrencyUnit", "Amount", "InvoiceDate", "AdminId", "AdminName", "Remark",
@@ -517,7 +567,7 @@ func (rg *PreRegisterController) Edit(c *gin.Context) {
 // @Description 删除到款预登记
 // @Param	request  body  fms.ContractRegisterDelReq  true  "type json string"
 // @Success 200 string "操作成功"
-// @router /contract/pre_pay/del [post]
+// @router /contract/pre_register/del [post]
 func (rg *PreRegisterController) Del(c *gin.Context) {
 	req := new(fms.PreRegisterDelReq)
 	err := c.ShouldBind(&req)
@@ -570,3 +620,50 @@ func (rg *PreRegisterController) Del(c *gin.Context) {
 
 	resp.Ok("操作成功", c)
 }
+
+// Detail
+// @Title 预登记记录详情
+// @Description 预登记记录详情
+// @Param	request  body  fms.PreRegisterDetailReq  true  "type json string"
+// @Success 200 string "操作成功"
+// @router /contract/pre_register/detail [post]
+func (rg *PreRegisterController) Detail(c *gin.Context) {
+	req := new(fms.PreRegisterDetailReq)
+	err := c.ShouldBind(&req)
+	if err != nil {
+		errs, ok := err.(validator.ValidationErrors)
+		if !ok {
+			resp.FailData("参数解析失败", "Err:"+err.Error(), c)
+			return
+		}
+		resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
+		return
+	}
+
+	ob := new(fms.ContractRegister)
+	item, e := ob.Fetch(req.ContractRegisterId)
+	if e != nil {
+		if e == utils.ErrNoRow {
+			resp.Fail("合同登记不存在或已被删除", c)
+			return
+		}
+		resp.FailMsg("获取合同登记失败", "Err:"+e.Error(), c)
+		return
+	}
+
+	cond := `contract_register_id = ? AND invoice_type = ? `
+	pars := make([]interface{}, 0)
+	pars = append(pars, req.ContractRegisterId, req.InvoiceType)
+	list, e := fms.GetContractInvoiceItemList(cond, pars)
+	if e != nil {
+		err = fmt.Errorf("获取开票到款列表失败, Err: %s", e.Error())
+		return
+	}
+
+	respItem := fms.ContractPreRegisterDetail{
+		ContractRegister: item,
+		List:             list,
+	}
+
+	resp.OkData("获取成功", respItem, c)
+}

+ 1 - 0
models/fms/contract_pre_payment.go

@@ -164,6 +164,7 @@ type PreRegisterEditReq struct {
 
 type PreRegisterEditReqItem struct {
 	InvoiceId        int     `json:"invoice_id" description:"开票ID"`
+	ArriveId         int     `json:"arrive_id" description:"到款ID"`
 	Amount           float64 `json:"amount" binding:"required" description:"到款金额"`
 	CurrencyUnit     string  `json:"currency_unit" binding:"required" description:"货币单位"`
 	Remark           string  `json:"remark" description:"备注信息"`

+ 25 - 7
models/fms/contract_pre_register.go

@@ -11,6 +11,8 @@ import (
 type ContractPreRegister struct {
 	PreRegisterId      int       `gorm:"primaryKey;column:pre_register_id" json:"pre_register_id" description:"预登记ID"`
 	ContractRegisterId int       `gorm:"column:contract_register_id" json:"contract_register_id" description:"登记ID"`
+	InvoiceId          int       `gorm:"column:invoice_id" json:"invoice_id" description:"开票ID"`
+	ArriveId           int       `gorm:"column:arrive_id" json:"arrive_id" description:"到款ID"`
 	CompanyName        string    `json:"company_name" description:"客户名称"`
 	Amount             float64   `gorm:"column:amount" json:"amount" description:"开票换算后的金额(人民币)"`
 	OriginAmount       float64   `gorm:"column:origin_amount" json:"origin_amount" description:"开票金额"`
@@ -45,7 +47,9 @@ func (c *ContractPreRegister) TableName() string {
 type ContractPreRegisterItem struct {
 	PreRegisterId      int     `gorm:"primaryKey;column:pre_register_id" json:"pre_register_id" description:"预登记ID"`
 	ContractRegisterId int     `gorm:"column:contract_register_id" json:"contract_register_id" description:"登记ID"`
-	CompanyName        string    `json:"company_name" description:"客户名称"`
+	InvoiceId          int     `gorm:"column:invoice_id" json:"invoice_id" description:"开票ID"`
+	ArriveId           int     `gorm:"column:arrive_id" json:"arrive_id" description:"到款ID"`
+	CompanyName        string  `json:"company_name" description:"客户名称"`
 	Amount             float64 `gorm:"column:amount" json:"amount" description:"开票换算后的金额(人民币)"`
 	OriginAmount       float64 `gorm:"column:origin_amount" json:"origin_amount" description:"开票金额"`
 	CurrencyUnit       string  `gorm:"column:currency_unit" json:"currency_unit" description:"开票货币国际代码"`
@@ -54,8 +58,8 @@ type ContractPreRegisterItem struct {
 	ArriveCurrencyUnit string  `gorm:"column:arrive_currency_unit" json:"arrive_currency_unit" description:"到款货币国际代码"`
 	UnitName           string  `json:"unit_name" description:"货币单位名称"`
 	InvoiceType        int     `gorm:"column:invoice_type" json:"invoice_type" description:"类型: 1-开票登记; 2-到款登记;3-开票预登记;4-到款预登记"`
-	InvoiceDate        string `gorm:"column:invoice_time" json:"invoice_time" description:"开票日"`
-	ArriveDate         string `gorm:"column:arrive_time" json:"arrive_time" description:"到款日"`
+	InvoiceDate        string  `gorm:"column:invoice_time" json:"invoice_time" description:"开票日"`
+	ArriveDate         string  `gorm:"column:arrive_time" json:"arrive_time" description:"到款日"`
 	SellerId           int     `gorm:"column:seller_id" json:"seller_id" description:"销售ID"`
 	SellerName         string  `gorm:"column:seller_name" json:"seller_name" description:"销售名称"`
 	PayType            int     `gorm:"column:pay_type" json:"pay_type" description:"付款方式:0-无;1-年付;2-半年付;3-季付;4-次付;5-异常"`
@@ -65,7 +69,7 @@ type ContractPreRegisterItem struct {
 	IsPrePay           int     `gorm:"column:is_pre_pay" json:"is_pre_pay" description:"是否预付款: 0-不是; 1-是"`
 	StartDate          string  `gorm:"column:start_date" json:"start_date" description:"约定开始时间"`
 	EndDate            string  `gorm:"column:end_date" json:"end_date" description:"约定结束时间"`
-	AdminId            int       `gorm:"column:admin_id" json:"admin_id" description:"操作人ID"`
+	AdminId            int     `gorm:"column:admin_id" json:"admin_id" description:"操作人ID"`
 	CreateTime         string  `gorm:"column:create_time" json:"create_time" description:"创建时间"`
 }
 
@@ -74,6 +78,8 @@ func formatContractPreRegister2Item(item *ContractPreRegister) (formatItem *Cont
 	formatItem = new(ContractPreRegisterItem)
 	formatItem.PreRegisterId = item.PreRegisterId
 	formatItem.ContractRegisterId = item.ContractRegisterId
+	formatItem.InvoiceId = item.InvoiceId
+	formatItem.ArriveId = item.ArriveId
 	formatItem.CompanyName = item.CompanyName
 	formatItem.Amount = item.Amount
 	formatItem.OriginAmount = item.OriginAmount
@@ -89,7 +95,7 @@ func formatContractPreRegister2Item(item *ContractPreRegister) (formatItem *Cont
 	formatItem.Remark = item.Remark
 	formatItem.IsPrePay = item.IsPrePay
 	formatItem.ServiceProductId = item.ServiceProductId
-	formatItem.AdminId  = item.AdminId
+	formatItem.AdminId = item.AdminId
 	formatItem.CreateTime = utils.TimeTransferString(utils.FormatDateTime, item.CreateTime)
 	return
 }
@@ -164,5 +170,17 @@ func formatContractPreRegister2ItemList(list []*ContractPreRegister) (itemList [
 // ContractPreRegisterList 预登记列表
 type ContractPreRegisterList struct {
 	*ContractPreRegisterItem
-	ServicesName string                 `json:"services" description:"套餐名称"`
-}
+	ServicesName string `json:"services" description:"套餐名称"`
+}
+
+// PreRegisterDetailReq 预登记详情请求体
+type PreRegisterDetailReq struct {
+	ContractRegisterId int `json:"contract_register_id" form:"contract_register_id" binding:"required,gte=1"`
+	InvoiceType        int `gorm:"column:invoice_type" json:"invoice_type" description:"类型: 1-开票登记; 2-到款登记;3-开票预登记;4-到款预登记"`
+}
+
+// ContractPreRegisterDetail 预登记详情
+type ContractPreRegisterDetail struct {
+	*ContractRegister
+	List []*ContractInvoiceItem `json:"list" description:"开票到款列表"`
+}

+ 1 - 0
routers/contract.go

@@ -43,4 +43,5 @@ func InitContract(rg *gin.RouterGroup) {
 	preRegisterGroup.POST("add", preRegister.Add)
 	preRegisterGroup.POST("edit", preRegister.Edit)
 	preRegisterGroup.POST("del", preRegister.Del)
+	preRegisterGroup.POST("detail", preRegister.Detail)
 }