123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543 |
- package fms
- import (
- "hongze/fms_api/global"
- "hongze/fms_api/models/base"
- "hongze/fms_api/utils"
- "time"
- )
- // ContractRegister 合同登记表
- type ContractRegister struct {
- ContractRegisterId int `gorm:"primaryKey;column:contract_register_id" json:"contract_register_id" description:"登记ID"`
- ContractCode string `gorm:"column:contract_code" json:"contract_code" description:"合同编号"`
- RelateContractCode string `gorm:"column:relate_contract_code" json:"relate_contract_code" description:"关联合同编号"`
- CrmContractId int `gorm:"column:crm_contract_id" json:"crm_contract_id" description:"CRM系统-合同ID"`
- ContractSource int `gorm:"column:contract_source" json:"contract_source" description:"合同来源: 0-非系统合同导入; 1-CRM合同导入"`
- CompanyName string `gorm:"column:company_name" json:"company_name" description:"客户名称"`
- ActualCompanyName string `gorm:"column:actual_company_name" json:"actual_company_name" description:"实际使用方"`
- ProductIds string `gorm:"column:product_ids" json:"product_ids" description:"产品ID:1-FICC; 2-权益, 如果两者都有,则用英文逗号拼接"`
- SellerId int `gorm:"column:seller_id" json:"seller_id" description:"CRM系统-销售ID"`
- SellerName string `gorm:"column:seller_name" json:"seller_name" description:"CRM系统-销售名称"`
- RaiSellerId int `gorm:"column:rai_seller_id" json:"rai_seller_id" description:"CRM系统-权益销售ID"`
- RaiSellerName string `gorm:"column:rai_seller_name" json:"rai_seller_name" description:"CRM系统-权益销售名称"`
- ContractType int `gorm:"column:contract_type" json:"contract_type" description:"合同类型: 1-新签; 2-续约; 3-代付; 4-补充协议"`
- ContractAmount float64 `gorm:"column:contract_amount" json:"contract_amount" description:"合同金额"`
- InvoicedAmount float64 `gorm:"column:invoiced_amount" json:"invoiced_amount" description:"开票金额"`
- PaymentAmount float64 `gorm:"column:payment_amount" json:"payment_amount" description:"到款金额"`
- CurrencyUnit string `gorm:"column:currency_unit" json:"currency_unit" description:"货币国际代码"`
- RMBRate float64 `gorm:"column:rmb_rate" json:"rmb_rate" description:"人民币汇率(create_time当日)"`
- StartDate time.Time `gorm:"column:start_date" json:"start_date" description:"合同开始日期"`
- EndDate time.Time `gorm:"column:end_date" json:"end_date" description:"合同结束日期"`
- SignDate time.Time `gorm:"column:sign_date" json:"sign_date" description:"合同签订日期"`
- AgreedPayTime string `gorm:"column:agreed_pay_time" json:"agreed_pay_time" description:"约定付款时间(如:生效日起10日内)"`
- ContractStatus int `gorm:"column:contract_status" json:"contract_status" description:"合同状态: 1-已审批; 2-单章寄出; 3-已签回"`
- RegisterStatus int `gorm:"column:register_status" json:"register_status" description:"登记状态: 1-进行中; 2-已完成;"`
- Remark string `gorm:"column:remark" json:"remark" description:"备注信息"`
- ServiceRemark string `gorm:"column:service_remark" json:"service_remark" description:"套餐备注信息"`
- HasPayment int `gorm:"column:has_payment" json:"has_payment" description:"是否有代付: 0-无; 1-有"`
- NewCompany int `gorm:"column:new_company" json:"new_company" description:"是否为新客户: 0-否; 1-是"`
- IsDeleted int `gorm:"column:is_deleted" json:"is_deleted" description:"是否已删除: 0-正常; 1-已删除"`
- base.TimeBase
- }
- func (c *ContractRegister) TableName() string {
- return "contract_register"
- }
- func (c *ContractRegister) Create() (err error) {
- err = global.DEFAULT_MYSQL.Create(c).Error
- return
- }
- func (c *ContractRegister) AddInBatches(list []*ContractRegister) (err error) {
- err = global.DEFAULT_MYSQL.CreateInBatches(list, len(list)).Error
- return
- }
- func (c *ContractRegister) Update(updateCols []string) (err error) {
- err = global.DEFAULT_MYSQL.Model(c).Select(updateCols).Updates(c).Error
- return
- }
- func (c *ContractRegister) Fetch(id int) (item *ContractRegister, err error) {
- err = global.DEFAULT_MYSQL.Model(c).Where("is_deleted = 0 AND contract_register_id = ?", id).First(&item).Error
- return
- }
- func (c *ContractRegister) FetchByCondition(condition string, pars []interface{}) (item *ContractRegister, err error) {
- err = global.DEFAULT_MYSQL.Model(c).
- Where("is_deleted = 0").
- Where(condition, pars...).
- First(&item).Error
- return
- }
- func (c *ContractRegister) List(condition string, pars []interface{}) (list []*ContractRegister, err error) {
- list = make([]*ContractRegister, 0)
- err = global.DEFAULT_MYSQL.Model(c).
- Where("is_deleted = 0").
- Where(condition, pars...).
- Find(&list).Error
- return
- }
- func (c *ContractRegister) PageList(page base.IPage, condition string, pars []interface{}) (count int64, results []*ContractRegister, err error) {
- results = make([]*ContractRegister, 0)
- query := global.DEFAULT_MYSQL.Model(c).
- Where("is_deleted = 0").
- Where(condition, pars...)
- query.Count(&count)
- if len(page.GetOrderItemsString()) > 0 {
- query = query.Order(page.GetOrderItemsString())
- }
- err = query.Limit(int(page.GetPageSize())).Offset(int(page.Offset())).Find(&results).Error
- return
- }
- // ContractRegisterListReq 合同登记列表请求体
- type ContractRegisterListReq struct {
- Keyword string `json:"keyword" form:"keyword" binding:"omitempty" description:"关键词"`
- StartDate string `json:"start_date" form:"start_date" binding:"omitempty,datetime=2006-01-02" description:"合同开始日期"`
- EndDate string `json:"end_date" form:"end_date" binding:"omitempty,datetime=2006-01-02" description:"合同结束日期"`
- ServiceTypes string `json:"service_types" form:"service_types" description:"套餐类型"`
- ContractType int `json:"contract_type" form:"contract_type" description:"合同类型"`
- RegisterStatus int `json:"register_status" form:"register_status" description:"登记状态"`
- base.PageReq
- }
- // ContractRegisterItem 合同登记
- type ContractRegisterItem struct {
- ContractRegisterId int `json:"contract_register_id" description:"登记ID"`
- ContractCode string `json:"contract_code" description:"合同编号"`
- RelateContractCode string `json:"relate_contract_code" description:"关联合同编号"`
- CrmContractId int `json:"crm_contract_id" description:"CRM系统-合同ID"`
- ContractSource int `json:"contract_source" description:"合同来源: 0-非系统合同导入; 1-CRM合同导入"`
- CompanyName string `json:"company_name" description:"客户名称"`
- ActualCompanyName string `json:"actual_company_name" description:"实际使用方"`
- ProductIds string `json:"product_ids" description:"产品ID:1-FICC; 2-权益, 如果两者都有,则用英文逗号拼接"`
- SellerId int `json:"seller_id" description:"CRM系统-销售ID"`
- SellerName string `json:"seller_name" description:"CRM系统-销售名称"`
- RaiSellerId int `json:"rai_seller_id" description:"CRM系统-权益销售ID"`
- RaiSellerName string `json:"rai_seller_name" description:"CRM系统-权益销售名称"`
- ContractType int `json:"contract_type" description:"合同类型: 1-新签; 2-续约"`
- ContractAmount float64 `json:"contract_amount" description:"合同金额"`
- InvoicedAmount float64 `json:"invoiced_amount" description:"开票金额"`
- PaymentAmount float64 `json:"payment_amount" description:"到款金额"`
- CurrencyUnit string `json:"currency_unit" description:"货币国际代码"`
- RMBRate float64 `json:"rmb_rate" description:"人民币汇率(create_time当日)"`
- StartDate string `json:"start_date" description:"合同开始日期"`
- EndDate string `json:"end_date" description:"合同结束日期"`
- SignDate string `json:"sign_date" description:"合同签订日期"`
- AgreedPayTime string `json:"agreed_pay_time" description:"约定付款时间(如:生效日起10日内)"`
- ContractStatus int `json:"contract_status" description:"合同状态: 1-已审批; 2-单章寄出; 3-已签回"`
- RegisterStatus int `json:"register_status" description:"登记状态: 1-进行中; 2-已完成;"`
- Remark string `json:"remark" description:"备注信息"`
- ServiceRemark string `json:"service_remark" description:"套餐备注信息"`
- HasPayment int `json:"has_payment" description:"是否有代付: 0-无; 1-有"`
- NewCompany int `json:"new_company" description:"是否为新客户: 0-否; 1-是"`
- CreateTime string `json:"create_time" description:"登记时间"`
- }
- // ContractRegisterList 合同登记列表
- type ContractRegisterList struct {
- *ContractRegisterItem
- ServicesName string `json:"services" description:"套餐名称"`
- InvoiceList []*ContractInvoiceItem `json:"invoice_list" description:"开票信息"`
- PaymentList []*ContractInvoiceItem `json:"payment_list" description:"到款信息"`
- }
- // ContractRegisterDelReq 合同登记-删除请求体
- type ContractRegisterDelReq struct {
- ContractRegisterId int `json:"contract_register_id" binding:"required,gte=1" description:"登记ID"`
- }
- // ContractRegisterUpdateStatusReq 合同登记-修改合同状态请求体
- type ContractRegisterUpdateStatusReq struct {
- ContractRegisterId int `json:"contract_register_id" binding:"required,gte=1" description:"登记ID"`
- ContractStatus int `json:"contract_status" binding:"oneof=1 2 3 4 5" description:"合同状态: 1-已审批; 2-单章寄出; 3-已签回; 4-已终止, 5-邮件备案"`
- }
- // ContractRegisterAddReq 新增合同登记请求体
- type ContractRegisterAddReq struct {
- ContractCode string `json:"contract_code" binding:"required" description:"合同编号"`
- RelateContractCode string `json:"relate_contract_code" description:"关联合同编号"`
- CrmContractId int `json:"crm_contract_id" description:"CRM系统-合同ID"`
- ContractSource int `json:"contract_source" binding:"oneof=0 1" description:"合同来源: 0-非系统合同导入; 1-CRM合同导入"`
- CompanyName string `json:"company_name" binding:"required" description:"客户名称"`
- ActualCompanyName string `json:"actual_company_name" description:"实际使用方"`
- SellerId int `json:"seller_id" binding:"required" description:"CRM系统-销售ID"`
- SellerName string `json:"seller_name" binding:"required" description:"CRM系统-销售名称"`
- RaiSellerId int `json:"rai_seller_id" description:"CRM系统-权益销售ID"`
- RaiSellerName string `json:"rai_seller_name" description:"CRM系统-权益销售名称"`
- ContractType int `json:"contract_type" binding:"oneof=1 2 3 4" description:"合同类型: 1-新签; 2-续约; 3-代付; 4-补充协议"`
- ContractAmount float64 `json:"contract_amount" binding:"required" description:"合同金额"`
- CurrencyUnit string `json:"currency_unit" binding:"required" description:"货币单位"`
- StartDate string `json:"start_date" binding:"required" description:"合同开始日期"`
- EndDate string `json:"end_date" binding:"required" description:"合同结束日期"`
- SignDate string `json:"sign_date" description:"合同签订日期"`
- AgreedPayTime string `json:"agreed_pay_time" description:"约定付款时间(如:生效日起10日内)"`
- ContractStatus int `json:"contract_status" binding:"oneof=1 2 3 4 5" description:"合同状态: 1-已审批; 2-单章寄出; 3-已签回; 4-已终止; 5-邮件备案"`
- Remark string `json:"remark" description:"备注信息"`
- ProductIds string `json:"product_ids" description:"产品ID:1-FICC; 2-权益, 如果两者都有,则用英文逗号拼接"`
- ServiceRemark string `json:"service_remark" description:"套餐备注"`
- HasPayment int `json:"has_payment" description:"是否有代付: 0-无; 1-有"`
- NewCompany int `json:"new_company" description:"是否为新客户: 0-否; 1-是"`
- Supplement int `json:"supplement" description:"是否为补录合同: 0-否; 1-是"`
- PrePayId int `json:"pre_pay_id" description:"预到款信息ID"`
- Services []ContractServiceAddReq `json:"services" description:"服务套餐内容"`
- ServiceAmount []ContractServiceAmountAddReq `json:"service_amount" description:"服务套餐金额"`
- }
- // ContractRegisterEditReq 编辑合同登记请求体
- type ContractRegisterEditReq struct {
- ContractRegisterId int `json:"contract_register_id" binding:"required,gte=1" description:"登记ID"`
- ContractRegisterAddReq
- }
- // CreateContractRegisterAndServices 新增合同登记及套餐
- func CreateContractRegisterAndServices(item *ContractRegister, serviceDetail []*ContractServiceAndDetail, serviceAmount []*ContractServiceAmount) (err error) {
- tx := global.DEFAULT_MYSQL.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- // 合同登记
- tx.Create(item)
- //nowTime := time.Now().Local()
- for i := 0; i < len(serviceDetail); i++ {
- // 合同服务
- t := serviceDetail[i]
- contractService := &ContractService{
- ContractRegisterId: item.ContractRegisterId,
- ProductId: t.ProductId,
- ServiceTemplateId: t.ServiceTemplateId,
- Title: t.Title,
- Value: t.Value,
- TableValue: t.TableValue,
- HasDetail: t.HasDetail,
- ChartPermissionId: t.ChartPermissionId,
- ChartPermissionIds: t.ChartPermissionIds,
- ServiceAmount: t.ServiceAmount,
- }
- contractService.Set()
- tx.Create(contractService)
- //// 合同服务详情
- //for j := 0; j < len(t.Detail); j++ {
- // contractServiceDetail := t.Detail[j]
- // contractServiceDetail.ContractServiceId = contractService.ContractServiceId
- // contractServiceDetail.ContractRegisterId = item.ContractRegisterId
- // contractServiceDetail.ServiceTemplateId = contractService.ServiceTemplateId
- // contractServiceDetail.CreateTime = nowTime
- // tx.Create(contractServiceDetail)
- // t.Detail[j] = contractServiceDetail
- //}
- }
- for i := 0; i < len(serviceAmount); i++ {
- // 合同服务
- t := serviceAmount[i]
- tmp := &ContractServiceAmount{
- ContractRegisterId: item.ContractRegisterId,
- ProductId: t.ProductId,
- ServiceAmount: t.ServiceAmount,
- CurrencyUnit: t.CurrencyUnit,
- }
- tx.Create(tmp)
- }
- return
- }
- // UpdateContractRegister 更新合同登记
- func UpdateContractRegister(item *ContractRegister, updateCols []string, serviceDetail []*ContractServiceAndDetail,
- invoiceList []*ContractInvoice, invoiceUpdateCols []string, invoiceHandleType int, serviceAmount []*ContractServiceAmount) (err error) {
- tx := global.DEFAULT_MYSQL.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- // 更新合同登记
- if e := tx.Model(item).Select(updateCols).Updates(item).Error; e != nil {
- err = e
- return
- }
- // 删除原服务及详情信息
- sql := `DELETE FROM contract_service WHERE contract_register_id = ?`
- tx.Exec(sql, item.ContractRegisterId)
- sql = `DELETE FROM contract_service_detail WHERE contract_register_id = ?`
- tx.Exec(sql, item.ContractRegisterId)
- sql = `DELETE FROM contract_service_amount WHERE contract_register_id = ?`
- tx.Exec(sql, item.ContractRegisterId)
- // 新增合同服务
- //nowTime := time.Now().Local()
- for i := 0; i < len(serviceDetail); i++ {
- // 合同服务
- t := serviceDetail[i]
- contractService := &ContractService{
- ContractRegisterId: item.ContractRegisterId,
- ProductId: t.ProductId,
- ServiceTemplateId: t.ServiceTemplateId,
- Title: t.Title,
- Value: t.Value,
- TableValue: t.TableValue,
- HasDetail: t.HasDetail,
- ChartPermissionId: t.ChartPermissionId,
- ChartPermissionIds: t.ChartPermissionIds,
- }
- contractService.Set()
- tx.Create(contractService)
- //// 合同服务详情
- //for j := 0; j < len(t.Detail); j++ {
- // contractServiceDetail := t.Detail[j]
- // contractServiceDetail.ContractServiceId = contractService.ContractServiceId
- // contractServiceDetail.ContractRegisterId = item.ContractRegisterId
- // contractServiceDetail.ServiceTemplateId = contractService.ServiceTemplateId
- // contractServiceDetail.CreateTime = nowTime
- // tx.Create(contractServiceDetail)
- // t.Detail[j] = contractServiceDetail
- //}
- }
- for i := 0; i < len(serviceAmount); i++ {
- // 合同服务
- t := serviceAmount[i]
- tmp := &ContractServiceAmount{
- ContractRegisterId: item.ContractRegisterId,
- ProductId: t.ProductId,
- ServiceAmount: t.ServiceAmount,
- CurrencyUnit: t.CurrencyUnit,
- }
- tx.Create(tmp)
- }
- // 开票到款操作类型: 0-无; 1-更新; 2-删除;
- if invoiceHandleType == 2 {
- sql = `UPDATE contract_invoice SET is_deleted = 1 WHERE contract_register_id = ?`
- if e := tx.Exec(sql, item.ContractRegisterId).Error; e != nil {
- err = e
- return
- }
- }
- if invoiceHandleType == 1 {
- for i := range invoiceList {
- if e := tx.Model(invoiceList[i]).Select(invoiceUpdateCols).Updates(invoiceList[i]).Error; e != nil {
- err = e
- return
- }
- }
- }
- return
- }
- // ContractRegisterDetailReq 合同登记-详情请求体
- type ContractRegisterDetailReq struct {
- ContractRegisterId int `json:"contract_register_id" form:"contract_register_id" binding:"required,gte=1"`
- }
- // ContractRegisterDetail-合同登记详情
- type ContractRegisterDetail struct {
- *ContractRegisterItem
- ServiceList []*ContractServiceAndDetail `json:"service_list" description:"合同服务及详情"`
- InvoiceList []*ContractInvoiceItem `json:"invoice_list" description:"开票信息"`
- PaymentList []*ContractInvoiceItem `json:"payment_list" description:"到款信息"`
- Logs []*ContractRegisterLogItem `json:"logs" description:"登记日志"`
- ServiceAmountList []*ContractServiceAmountItem `json:"service_amount_list" description:"合同套餐金额"`
- }
- // GetContractRegisterItemById 获取合同登记信息
- func GetContractRegisterItemById(id int) (result *ContractRegisterItem, err error) {
- item := new(ContractRegister)
- err = global.DEFAULT_MYSQL.Model(ContractRegister{}).
- Where("is_deleted = 0 AND contract_register_id = ?", id).
- First(&item).Error
- if err != nil && err != utils.ErrNoRow {
- return
- }
- result = formatContractRegister2Item(item)
- return
- }
- // GetContractRegisterItemPageList 获取合同登记列表-分页
- func GetContractRegisterItemPageList(page base.IPage, condition string, pars []interface{}) (count int64, results []*ContractRegisterItem, err error) {
- list := make([]*ContractRegister, 0)
- query := global.DEFAULT_MYSQL.Table("contract_register").
- Where("is_deleted = 0").
- Where(condition, pars...)
- query.Count(&count)
- if len(page.GetOrderItemsString()) > 0 {
- query = query.Order(page.GetOrderItemsString())
- }
- err = query.Limit(int(page.GetPageSize())).Offset(int(page.Offset())).Find(&list).Error
- if err != nil {
- return
- }
- for i := range list {
- results = append(results, formatContractRegister2Item(list[i]))
- }
- return
- }
- // formatContractRegister2Item 格式化ContractRegister
- func formatContractRegister2Item(item *ContractRegister) (formatItem *ContractRegisterItem) {
- formatItem = new(ContractRegisterItem)
- formatItem.ContractRegisterId = item.ContractRegisterId
- formatItem.ContractCode = item.ContractCode
- formatItem.RelateContractCode = item.RelateContractCode
- formatItem.CrmContractId = item.CrmContractId
- formatItem.ContractSource = item.ContractSource
- formatItem.CompanyName = item.CompanyName
- formatItem.ActualCompanyName = item.ActualCompanyName
- formatItem.ProductIds = item.ProductIds
- formatItem.SellerId = item.SellerId
- formatItem.SellerName = item.SellerName
- formatItem.RaiSellerId = item.RaiSellerId
- formatItem.RaiSellerName = item.RaiSellerName
- formatItem.ContractType = item.ContractType
- formatItem.ContractAmount = item.ContractAmount
- formatItem.InvoicedAmount = item.InvoicedAmount
- formatItem.PaymentAmount = item.PaymentAmount
- formatItem.CurrencyUnit = item.CurrencyUnit
- formatItem.RMBRate = item.RMBRate
- formatItem.StartDate = utils.TimeTransferString(utils.FormatDate, item.StartDate)
- formatItem.EndDate = utils.TimeTransferString(utils.FormatDate, item.EndDate)
- formatItem.SignDate = utils.TimeTransferString(utils.FormatDate, item.SignDate)
- formatItem.AgreedPayTime = item.AgreedPayTime
- formatItem.ContractStatus = item.ContractStatus
- formatItem.RegisterStatus = item.RegisterStatus
- formatItem.Remark = item.Remark
- formatItem.ServiceRemark = item.ServiceRemark
- formatItem.HasPayment = item.HasPayment
- formatItem.NewCompany = item.NewCompany
- formatItem.CreateTime = utils.TimeTransferString(utils.FormatDateTime, item.CreateTime)
- return
- }
- // CreateImportContractRegister 新增导入的合同登记及套餐、开票到款信息
- func CreateImportContractRegister(item *ContractRegister, serviceList []*ContractService, invoiceList []*ContractInvoice, serviceAmountList []*ContractServiceAmount) (newId int, err error) {
- tx := global.DEFAULT_MYSQL.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- // 新增合同登记
- if e := tx.Create(item).Error; e != nil {
- err = e
- return
- }
- newId = item.ContractRegisterId
- // 新增套餐
- if len(serviceList) > 0 {
- // 过滤重复的数组
- serviceMap := make(map[int]struct{})
- addServiceList := make([]*ContractService, 0)
- for i := range serviceList {
- if _, ok := serviceMap[serviceList[i].ServiceTemplateId]; !ok {
- serviceList[i].ContractRegisterId = newId
- addServiceList = append(addServiceList, serviceList[i])
- serviceMap[serviceList[i].ServiceTemplateId] = struct{}{}
- }
- }
- if e := tx.CreateInBatches(addServiceList, len(addServiceList)).Error; e != nil {
- err = e
- return
- }
- }
- // 新增合同套餐金额相关信息
- if len(serviceAmountList) > 0 {
- for i := range serviceAmountList {
- serviceAmountList[i].ContractRegisterId = newId
- }
- if e := tx.CreateInBatches(serviceAmountList, len(serviceAmountList)).Error; e != nil {
- err = e
- return
- }
- }
- // 新增开票/到款
- if len(invoiceList) > 0 {
- for i := range invoiceList {
- invoiceList[i].ContractRegisterId = newId
- }
- if e := tx.CreateInBatches(invoiceList, len(invoiceList)).Error; e != nil {
- err = e
- return
- }
- }
- return
- }
- func GetContractInfoByRegisterIds(registerIds []int) (list []ContractRegister,err error) {
- err = global.DEFAULT_MYSQL.Model(ContractRegister{}).
- Where("is_deleted = 0 AND contract_register_id in ?", registerIds).
- Find(&list).Error
- return
- }
- // CreateContractRegisterAndServices 新增合同登记及套餐
- func CreateContractRegisterAndServicesAndPayMent(item *ContractRegister, serviceDetail []*ContractServiceAndDetail, prePayId int) (err error) {
- tx := global.DEFAULT_MYSQL.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- // 合同登记
- tx.Create(item)
- //nowTime := time.Now().Local()
- for i := 0; i < len(serviceDetail); i++ {
- // 合同服务
- t := serviceDetail[i]
- contractService := &ContractService{
- ContractRegisterId: item.ContractRegisterId,
- ProductId: t.ProductId,
- ServiceTemplateId: t.ServiceTemplateId,
- Title: t.Title,
- Value: t.Value,
- TableValue: t.TableValue,
- HasDetail: t.HasDetail,
- ChartPermissionId: t.ChartPermissionId,
- ChartPermissionIds: t.ChartPermissionIds,
- }
- contractService.Set()
- tx.Create(contractService)
- //// 合同服务详情
- //for j := 0; j < len(t.Detail); j++ {
- // contractServiceDetail := t.Detail[j]
- // contractServiceDetail.ContractServiceId = contractService.ContractServiceId
- // contractServiceDetail.ContractRegisterId = item.ContractRegisterId
- // contractServiceDetail.ServiceTemplateId = contractService.ServiceTemplateId
- // contractServiceDetail.CreateTime = nowTime
- // tx.Create(contractServiceDetail)
- // t.Detail[j] = contractServiceDetail
- //}
- }
- return
- }
|