123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- package fms
- import (
- "hongze/fms_api/global"
- "hongze/fms_api/models/base"
- "hongze/fms_api/utils"
- "time"
- )
- // ContractInvoice 合同开票表
- type ContractInvoice struct {
- ContractInvoiceId int `gorm:"primaryKey;column:contract_invoice_id" json:"contract_invoice_id" description:"开票ID"`
- ContractRegisterId int `gorm:"column:contract_register_id" json:"contract_register_id" description:"登记ID"`
- Amount float64 `gorm:"column:amount" json:"amount" description:"金额"`
- InvoiceType int `gorm:"column:invoice_type" json:"invoice_type" description:"类型: 1-开票登记; 2-到款登记"`
- InvoiceDate time.Time `gorm:"column:invoice_time" json:"invoice_time" description:"开票日期/到款月"`
- AdminId int `gorm:"column:admin_id" json:"admin_id" description:"操作人ID"`
- AdminName string `gorm:"column:admin_name" json:"admin_name" description:"操作人姓名"`
- Remark string `gorm:"column:remark" json:"remark" description:"备注信息"`
- IsDeleted int `gorm:"column:is_deleted" json:"is_deleted" description:"是否已删除: 0-正常; 1-已删除"`
- base.TimeBase
- }
- func (c *ContractInvoice) TableName() string {
- return "contract_invoice"
- }
- // ContractInvoiceItem 合同开票/到款
- type ContractInvoiceItem struct {
- ContractInvoiceId int `gorm:"column:contract_invoice_id" json:"contract_invoice_id" description:"开票ID"`
- ContractRegisterId int `gorm:"column:contract_register_id" json:"contract_register_id" description:"登记ID"`
- Amount float64 `gorm:"column:amount" json:"amount" description:"金额"`
- InvoiceType int `gorm:"column:invoice_type" json:"invoice_type" description:"类型: 1-开票登记; 2-到款登记"`
- InvoiceDate string `gorm:"column:invoice_time" json:"invoice_time" description:"开票日期/到款月"`
- Remark string `gorm:"column:remark" json:"remark" description:"备注信息"`
- CreateTime string `gorm:"column:create_time" json:"create_time" description:"创建时间"`
- }
- func (c *ContractInvoice) Create() (err error) {
- err = global.DEFAULT_MYSQL.Create(c).Error
- return
- }
- func (c *ContractInvoice) AddInBatches(list []*ContractInvoice) (err error) {
- err = global.DEFAULT_MYSQL.CreateInBatches(list, len(list)).Error
- return
- }
- func (c *ContractInvoice) Update(updateCols []string) (err error) {
- err = global.DEFAULT_MYSQL.Model(c).Select(updateCols).Updates(c).Error
- return
- }
- func (c *ContractInvoice) List(condition string, pars []interface{}) (list []*ContractInvoice, err error) {
- list = make([]*ContractInvoice, 0)
- err = global.DEFAULT_MYSQL.Model(c).
- Where("is_deleted = 0").
- Where(condition, pars...).
- Find(&list).Error
- return
- }
- func (c *ContractInvoice) PageList(page base.IPage, condition string, pars []interface{}) (count int64, results []*ContractInvoice, err error) {
- results = make([]*ContractInvoice, 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
- }
- // DeleteAndCreateNewInvoice 删除并新增登记
- func (c *ContractInvoice) DeleteAndCreateNewInvoice(contractRegisterId, invoiceType int, invoices []*ContractInvoice) (err error) {
- tx := global.DEFAULT_MYSQL.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- err = tx.Model(c).
- Where("contract_register_id = ? AND invoice_type = ?", contractRegisterId, invoiceType).
- UpdateColumn("is_deleted", 1).Error
- if err != nil {
- return
- }
- if len(invoices) > 0 {
- err = tx.CreateInBatches(invoices, len(invoices)).Error
- if err != nil {
- return
- }
- }
- return
- }
- // ContractInvoiceSaveReq 合同开票-请求体
- type ContractInvoiceSaveReq struct {
- ContractRegisterId int `json:"contract_register_id" binding:"required,gte=1" description:"登记ID"`
- InvoiceType int `json:"invoice_type" binding:"oneof=1 2" description:"类型: 1-开票登记; 2-到款登记"`
- AmountList []*ContractInvoiceSaveItem `json:"amount_list"`
- }
- // ContractInvoiceSaveReq 合同开票数据
- type ContractInvoiceSaveItem struct {
- InvoiceId int `json:"invoice_id" description:"开票ID"`
- Amount float64 `json:"amount" description:"开票金额/到款金额"`
- InvoiceDate string `json:"invoice_date" description:"开票日期/到款月"`
- }
- // GetContractInvoiceItemList 获取开票到款列表
- func GetContractInvoiceItemList(condition string, pars []interface{}) (itemList []*ContractInvoiceItem, err error) {
- list := make([]*ContractInvoice, 0)
- err = global.DEFAULT_MYSQL.Model(ContractInvoice{}).
- Where("is_deleted = 0").
- Where(condition, pars...).
- Order("contract_invoice_id ASC").
- Find(&list).Error
- if err != nil {
- return
- }
- itemList = formatContractInvoice2ItemList(list)
- return
- }
- // formatContractInvoice2ItemList 格式化ContractInvoice
- func formatContractInvoice2ItemList(list []*ContractInvoice) (itemList []*ContractInvoiceItem) {
- itemList = make([]*ContractInvoiceItem, 0)
- for i := range list {
- itemList = append(itemList, &ContractInvoiceItem{
- ContractInvoiceId: list[i].ContractInvoiceId,
- ContractRegisterId: list[i].ContractRegisterId,
- Amount: list[i].Amount,
- InvoiceType: list[i].InvoiceType,
- InvoiceDate: utils.TimeTransferString(utils.FormatDate, list[i].InvoiceDate),
- Remark: list[i].Remark,
- CreateTime: utils.TimeTransferString(utils.FormatDateTime, list[i].CreateTime),
- })
- }
- return
- }
|