|
|
- 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
- }
|