package sb

import (
	"database/sql/driver"
	"time"
)

type YearMain struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	TableName  string    `json:"tableName"` // 主表表名
	KouStatus  uint      `json:"kouStatus"`
	SbStatus   int       `json:"sbStatus"`
	ComID      uint      `json:"comId"`  //
	Period     string    `json:"period"` // 账期开始日期
	Status     int8      `json:"status"` // 1 拉取可更改 2已生成报表可更改 3 已修改计算本年累计 不可更改了 3已提交申报不可更改
	InitStatus int8      `json:"init_status"`
}

type YearA101010 struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`
	Type       string    `json:"type"`
	Project    string    `json:"project"`
	Amount     string    `json:"amount"`
}
type YearA100000Fb1 struct {
	Amount     string    `json:"amount"`
	Code       string    `json:"code"`
	CreatedAt  time.Time `json:"createdAt"`
	Id         int       `json:"id"`
	IsCheck    int       `json:"isCheck"`
	Other      string    `json:"other"`
	Project    string    `json:"project"`
	Type       string    `json:"type"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId int       `json:"yearMainId"`
}
type YearA100000Fb2 struct {
	Amount     string    `json:"amount"`
	Code       string    `json:"code"`
	CreatedAt  time.Time `json:"createdAt"`
	Id         int       `json:"id"`
	IsCheck    int       `json:"isCheck"`
	Other      string    `json:"other"`
	Project    string    `json:"project"`
	Type       string    `json:"type"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId int       `json:"yearMainId"`
}
type YearA102010 struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`
	Type       string    `json:"type"`
	Project    string    `json:"project"`
	Amount     string    `json:"amount"`
}

type YearA104000 struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`
	Type       string    `json:"type"`
	Project    string    `json:"project"`

	A1 string `json:"a1"`
	A2 string `json:"a2"`
	A3 string `json:"a3"`
	A4 string `json:"a4"`
	A5 string `json:"a5"`
	A6 string `json:"a6"`
}

type YearA105050 struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`
	Type       string    `json:"type"`
	Project    string    `json:"project"`

	A1 string `json:"a1"`
	A2 string `json:"a2"`
	A3 string `json:"a3"`
	A4 string `json:"a4"`
	A5 string `json:"a5"`
	A6 string `json:"a6"`
	A7 string `json:"a7"`
}

type YearA105060 struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`
	Type       string    `json:"type"`
	Project    string    `json:"project"`

	A1 string `json:"a1"`
	A2 string `json:"a2"`
}

type YearA105080 struct {
	ID          uint      `json:"id" gorm:"primary_key"`
	CreatedAt   time.Time `json:"createdAt"`
	UpdatedAt   time.Time `json:"updatedAt"`
	YearMainId  uint      `json:"yearMainId"`
	Type        string    `json:"type"`
	Project     string    `json:"project"`
	ProjectItem string    `json:"projectItem"`

	A1 string `json:"a1"`
	A2 string `json:"a2"`
	A3 string `json:"a3"`
	A4 string `json:"a4"`
	A5 string `json:"a5"`
	A6 string `json:"a6"`
	A7 string `json:"a7"`
	A8 string `json:"a8"`
	A9 string `json:"a9"`
}

// YearA105080Fb  A105080Fb28 29附表结构体
type YearA105080Fb struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`
	Type       string    `json:"type"`
	Project    string    `json:"project"`
	Other      string    `json:"other"`
	Code       string    `json:"code"`
	Amount     string    `json:"amount"`
	IsCheck    int       `json:"isCheck"`
}

type YearA105000 struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`
	Type       string    `json:"type"`
	Project    string    `json:"project"`

	A1 string `json:"a1"`
	A2 string `json:"a2"`
	A3 string `json:"a3"`
	A4 string `json:"a4"`
}

type YearA100000 struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`
	Type       string    `json:"type"`
	Project    string    `json:"project"`

	ProjectItem string `json:"projectItem"`
	Amount      string `json:"amount"`
}

type YearA107040 struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`
	Type       string    `json:"type"`
	Project    string    `json:"project"`

	Amount string `json:"amount"`
}

type YearA106000 struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`
	Type       string    `json:"type"`
	Project    string    `json:"project"`

	A1  string `json:"a1"`
	A2  string `json:"a2"`
	A3  string `json:"a3"`
	A4  string `json:"a4"`
	A5  string `json:"a5"`
	A6  string `json:"a6"`
	A7  string `json:"a7"`
	A8  string `json:"a8"`
	A9  string `json:"a9"`
	A10 string `json:"a10"`
	A11 string `json:"a11"`
	A12 string `json:"a12"`
}
type YearA106000Copy1 struct {
	ID        uint      `json:"id" gorm:"primary_key"`
	CreatedAt time.Time `json:"createdAt"`
	UpdatedAt time.Time `json:"updatedAt"`
	ComId     uint      `json:"comId"`

	Type    string `json:"type"`
	Project string `json:"project"`

	A1     string `json:"a1"`
	A2     string `json:"a2"`
	A3     string `json:"a3"`
	A4     string `json:"a4"`
	A5     string `json:"a5"`
	A6     string `json:"a6"`
	A7     string `json:"a7"`
	A8     string `json:"a8"`
	A9     string `json:"a9"`
	A10    string `json:"a10"`
	A11    string `json:"a11"`
	A12    string `json:"a12"`
	Period string `json:"period"`
}

type YearSelect struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`

	TableName string `json:"tableName"` // 主表表名
	Type      string `json:"type"`
	Project   string `json:"project"`

	Status  int `json:"status"`
	Sort    int `json:"sort"`
	Selects int `json:"selects"`
}

type YearA000000Gd struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`

	GdName  string  `json:"gdName"`
	GdType  string  `json:"gdType"`
	GdNo    string  `json:"gdNo"`
	Bl      float64 `json:"bl"`
	Amount  float64 `json:"amount"`
	Country string  `json:"country"`
}

type YearA000000Type string

func (ct *YearA000000Type) Scan(value interface{}) error {
	*ct = YearA000000Type(value.([]byte))
	return nil
}
func (ct YearA000000Type) Value() (driver.Value, error) {
	return string(ct), nil
}

const (
	Y YearA000000Type = "Y"
	N YearA000000Type = "N"
)

type YearA000000 struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainId uint      `json:"yearMainId"`

	A101      string  `json:"a101"`
	A102      float64 `json:"a102"`
	A103      float64 `json:"a103"`
	A104      int     `json:"a104"`
	A105      string  `json:"a105"`
	A106      string  `json:"a106"`
	A107      string  `json:"a107"`
	A108      string  `json:"a108"`
	A109      string  `json:"a109"`
	A110      string  `json:"a110"`
	A201      string  `json:"a201"`
	A202      string  `json:"a202"`
	A2031     string  `json:"a2031"`
	A20321    string  `json:"a20321"`
	A20322    string  `json:"a20322"`
	A204      string  `json:"a204"`
	A205      string  `json:"a205"`
	A206      string  `json:"a206"`
	A207      string  `json:"a207"`
	A208      string  `json:"a208"`
	A209      string  `json:"a209"`
	A21001    string  `json:"a21001"`
	A21002    string  `json:"a21002"`
	A21003    string  `json:"a21003"`
	A21004    string  `json:"a21004"`
	A210num01 string  `json:"a210num01"`
	A210num02 string  `json:"a210num02"`
	A21101    string  `json:"a21101"`
	A21102    string  `json:"a21102"`
	A21103    string  `json:"a21103"`
	A21104    string  `json:"a21104"`
	A212      string  `json:"a212"`
	A213      string  `json:"a213"`
	A214      string  `json:"a214"`
	A215      string  `json:"a215"`
	A216      string  `json:"a216"`
	A217      string  `json:"a217"`
	A218      string  `json:"a218"`
	A219      string  `json:"a219"`
	A220      string  `json:"a220"`
	A221      string  `json:"a221"`
	A222      string  `json:"a222"`
	A223      string  `json:"a223"`
	A224      string  `json:"a224"`
}

type YearZcfz struct {
	ID         uint      `json:"id" gorm:"primary_key"`
	CreatedAt  time.Time `json:"createdAt"`
	UpdatedAt  time.Time `json:"updatedAt"`
	YearMainID uint      `json:"yearMainID"` //
	Type       float64   `json:"type"`       // 对应资产负债表行次字段 不标准
	Zcxmmc     string    `json:"zcxmmc"`     // 流动资产
	QmyeZc     float64   `json:"qmyeZc"`     // 期末余额
	NcyeZc     float64   `json:"ncyeZc"`     // 年初余额
	Qyxmmc     string    `json:"qyxmmc"`     // 流动负债
	QmyeQy     float64   `json:"qmyeQy"`     // 期末余额
	NcyeQy     float64   `json:"ncyeQy"`     // 年初余额
}

type YearLrb struct {
	ID            uint      `json:"id" gorm:"primary_key"`
	CreatedAt     time.Time `json:"createdAt"`
	UpdatedAt     time.Time `json:"updatedAt"`
	YearMainID    uint      `json:"yearMainID"`
	Project       string    `json:"project"`
	Type          float64   `json:"type"`
	YearTotal     float64   `json:"yearTotal"`
	LastYearTotal float64   `json:"lastYearTotal"`
}

type YearXjllb struct {
	ID            uint      `json:"id" gorm:"primary_key"`
	CreatedAt     time.Time `json:"createdAt"`
	UpdatedAt     time.Time `json:"updatedAt"`
	YearMainID    uint      `json:"yearMainID"`
	Project       string    `json:"project"`
	Type          float64   `json:"type"`
	YearTotal     float64   `json:"yearTotal"`
	LastYearTotal float64   `json:"lastYearTotal"`
}
