// Package models 40.a交割服务
package models

import (
	"fmt"
	"mtp2_if/db"
)

// Deliveryrelation 商品交割关系表
type Deliveryrelation struct {
	Goodsid           int64   `json:"goodsid"  xorm:"'GOODSID'" binding:"required"`               // 交易合约ID
	Deliverymode      int64   `json:"deliverymode"  xorm:"'DELIVERYMODE'"`                        // 交割方式 - 1:点选式 2:申报式
	Wrstandardid      int64   `json:"wrstandardid"  xorm:"'WRSTANDARDID'"`                        // 仓单标准ID
	Deliverygoodsid   int64   `json:"deliverygoodsid"  xorm:"'DELIVERYGOODSID'"`                  // 交割商品
	Mindeliveryqty    int64   `json:"mindeliveryqty"  xorm:"'MINDELIVERYQTY'" binding:"required"` // 最小交割系数(K)
	Rratio1           int64   `json:"rratio1"  xorm:"'RRATIO1'"`                                  // 兑换系数(交易合约)(R1)
	Rratio2           int64   `json:"rratio2"  xorm:"'RRATIO2'"`                                  // 兑换系数(仓单标准)(R2)
	Deliverypricerule int64   `json:"deliverypricerule"  xorm:"'DELIVERYPRICERULE'"`              // 交割价规则- 1:行情价 2:建仓价
	Begindate         string  `json:"begindate"  xorm:"'BEGINDATE'" binding:"required"`           // 起始日期(yyyyMMdd)
	Enddate           string  `json:"enddate"  xorm:"'ENDDATE'" binding:"required"`               // 结束日期(yyyyMMdd)
	Buytemplateid     int64   `json:"buytemplateid"  xorm:"'BUYTEMPLATEID'"`                      // 买履约计划模板ID
	Selltemplateid    int64   `json:"selltemplateid"  xorm:"'SELLTEMPLATEID'"`                    // 卖履约计划模板ID
	Deliverytype      int64   `json:"deliverytype"  xorm:"'DELIVERYTYPE'"`                        // 交割模式 - 1:X交割 2:X+P交割 3:X+C交割 4:X+P+C交割
	Xdeliveryratio    int64   `json:"xdeliveryratio"  xorm:"'XDELIVERYRATIO'" binding:"required"` // 交易合约系数(m)
	Ppricemode        int64   `json:"ppricemode"  xorm:"'PPRICEMODE'"`                            // P合约价格方式 - 1:商品价  2:固定值
	Pdeliveryprice    float64 `json:"pdeliveryprice"  xorm:"'PDELIVERYPRICE'"`                    // P合约价格(商品价时填写0，固定值时填写固定值)
	Pdeliveryratio    int64   `json:"pdeliveryratio"  xorm:"'PDELIVERYRATIO'"`                    // P合约系数(n)
	Pgoodsid          int64   `json:"pgoodsid"  xorm:"'PGOODSID'"`                                // P合约ID
	P2pricemode       int64   `json:"p2pricemode"  xorm:"'P2PRICEMODE'"`                          // P2合约价格方式 - 1:商品价  2:固定值
	P2deliveryprice   float64 `json:"p2deliveryprice"  xorm:"'P2DELIVERYPRICE'"`                  // P2合约价格(商品价时填写0，固定值时填写固定值)
	P2deliveryratio   int64   `json:"p2deliveryratio"  xorm:"'P2DELIVERYRATIO'"`                  // P2合约系数(p)
	P2goodsid         int64   `json:"p2goodsid"  xorm:"'P2GOODSID'"`                              // P2合约ID
	Rratio            int64   `json:"rratio"  xorm:"'RRATIO'"`                                    // 兑换系数(R)
}

// TableName is DELIVERYRELATION
func (Deliveryrelation) TableName() string {
	return "DELIVERYRELATION"
}

// GetDeliverGoods 获取交割商品
func GetDeliverGoods() ([]Deliverygoods, error) {
	engine := db.GetEngine()
	d := make([]Deliverygoods, 0)
	if err := engine.Where("IsValid=1").And("categoryid<>0").Find(&d); err != nil {
		return nil, fmt.Errorf("query deleiverygoods fail")
	}

	return d, nil
}
