package models
|
|
|
|
import (
|
|
"errors"
|
|
"lapp_-wy/db"
|
|
"lapp_-wy/utils"
|
|
"time"
|
|
)
|
|
|
|
type Otherchargetab struct {
|
|
Cid int `json:"cid" xorm:"not null pk INT(4)"`
|
|
Otherid int `json:"otherid" xorm:"not null pk INT(10)"`
|
|
Contact string `json:"contact" xorm:"VARCHAR(32)"`
|
|
Phone string `json:"phone" xorm:"VARCHAR(20)"`
|
|
Serialnumber string `json:"serialnumber" xorm:"VARCHAR(32)"`
|
|
Chargeway string `json:"chargeway" xorm:"VARCHAR(100)"`
|
|
Category string `json:"category" xorm:"VARCHAR(32)"`
|
|
Chargestartdate string `json:"chargestartdate" xorm:"VARCHAR(20)"`
|
|
Chargeenddate string `json:"chargeenddate" xorm:"VARCHAR(20)"`
|
|
ChargeMoney float64 `json:"charge_money" xorm:"DECIMAL(10,2)"`
|
|
Chargetime string `json:"chargetime" xorm:"VARCHAR(20)"`
|
|
Chargeby string `json:"chargeby" xorm:"VARCHAR(20)"`
|
|
Remark string `json:"remark" xorm:"VARCHAR(255)"`
|
|
Createtime string `json:"createtime" xorm:"VARCHAR(20)"`
|
|
}
|
|
|
|
func (t *Otherchargetab) TableName() string {
|
|
return "otherchargetab"
|
|
}
|
|
|
|
//增
|
|
func (t *Otherchargetab) Add() error {
|
|
engine := db.MasterEngine()
|
|
|
|
session := engine.NewSession()
|
|
defer session.Close()
|
|
// add Begin() before any action
|
|
err := session.Begin()
|
|
if err != nil {
|
|
session.Rollback()
|
|
return err
|
|
}
|
|
//生成流水号
|
|
me := new(Snrtab)
|
|
me.Cid = t.Cid
|
|
Otherid, err := me.GetNextSnr("Otherid")
|
|
if err != nil {
|
|
session.Rollback()
|
|
return err
|
|
}
|
|
//生成流水号
|
|
numId := new(Snrtab)
|
|
numId.Cid = t.Cid
|
|
serialnumber, err := numId.GetNextSnr("Serialnumber")
|
|
if err != nil {
|
|
session.Rollback()
|
|
return err
|
|
}
|
|
t.Serialnumber = serialnumber
|
|
t.Otherid = utils.ValueToInt(Otherid, 0)
|
|
t.Chargetime = utils.TimeFormat(time.Now(), "yyyy-MM-dd")
|
|
_, err = session.Table("otherchargetab").Insert(t)
|
|
if err != nil {
|
|
session.Rollback()
|
|
return err
|
|
}
|
|
|
|
//生成流水号
|
|
chargenr := new(Snrtab)
|
|
chargenr.Cid = t.Cid
|
|
cnr, err := chargenr.GetNextSnr("Chargenr")
|
|
if err != nil {
|
|
session.Rollback()
|
|
return err
|
|
}
|
|
//添加记录
|
|
charge := new(Chargetab)
|
|
charge.Cid = t.Cid
|
|
charge.Chargetype = 4
|
|
charge.Info = t.Remark
|
|
charge.Createtime = t.Createtime
|
|
charge.Lastmodifytime = t.Createtime
|
|
charge.Chargableexpense = t.ChargeMoney
|
|
charge.Chargedexpense = t.ChargeMoney
|
|
charge.Chargetime = t.Chargetime
|
|
charge.Chargeway = t.Chargeway
|
|
charge.Serialnumber = serialnumber
|
|
charge.Chargenr = utils.ValueToInt(cnr, 0)
|
|
charge.Chargestartdate = t.Chargestartdate
|
|
charge.Chargeenddate = t.Chargeenddate
|
|
_, err = session.Table("chargetab").Insert(charge)
|
|
if err != nil {
|
|
session.Rollback()
|
|
return err
|
|
}
|
|
result := ChargeShareTheMonth(session, charge.Cid, charge.Chargenr, charge.Chargestartdate, charge.Chargeenddate, charge.Chargedexpense)
|
|
if !result {
|
|
session.Rollback()
|
|
return errors.New("分摊费用计算错误")
|
|
}
|
|
err = session.Commit()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
//查
|
|
func (t *Otherchargetab) SelectOne() (data Otherchargetab,err error) {
|
|
e := db.MasterEngine()
|
|
query := e.Table("otherchargetab").Where("cid = ? ", t.Cid)
|
|
|
|
if !utils.ValueIsEmpty(t.Remark) {
|
|
query = query.And("remark = ?", t.Remark)
|
|
}
|
|
if !utils.ValueIsEmpty(t.Contact) {
|
|
query = query.And("contact = ?", t.Contact)
|
|
}
|
|
if !utils.ValueIsEmpty(t.Category) {
|
|
query = query.And("category = ?", t.Category)
|
|
}
|
|
_, err = query.Desc("createtime").Get(&data)
|
|
if err != nil {
|
|
return data, err
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
//分页
|
|
func (t *Otherchargetab) GetPage(pageSize int, pageIndex int) ([]Otherchargetab, int, error) {
|
|
data := make([]Otherchargetab, 0)
|
|
e := db.MasterEngine()
|
|
query := e.Table("otherchargetab").Where("cid = ? ", t.Cid)
|
|
table := e.Table("otherchargetab").Where("cid = ? ", t.Cid)
|
|
if !utils.ValueIsEmpty(t.Remark) {
|
|
descr := "%" + t.Remark + "%"
|
|
query = query.And("remark like ?", descr)
|
|
table = table.And("remark like ?", descr)
|
|
}
|
|
if !utils.ValueIsEmpty(t.Contact) {
|
|
query = query.And("contact = ?", t.Contact)
|
|
table = table.And("contact = ?", t.Contact)
|
|
}
|
|
Offset := (pageIndex - 1) * pageSize
|
|
err := query.Limit(pageSize, Offset).Desc("createtime").Find(&data)
|
|
pcount := new(Otherchargetab)
|
|
count, err := table.Count(pcount)
|
|
if err != nil {
|
|
return data, 0, err
|
|
}
|
|
return data, int(count), nil
|
|
}
|