package models

type Stock struct {
	StockInIoNumber  int            `json:"stock_in_io" description:"入库单数量"`
	StockInIoMoney   float64        `json:"stock_in_io_money" description:"入库单金额"`
	StockOutIoNumber int            `json:"stock_out_io" description:"出库单数量"`
	StockOutIoMoney  float64        `json:"stock_out_io_money" description:"出库单金额"`
	HotCommodity     []HotCommodity `json:"hot_commodity" description:"热销商品列表"`
}

type HotCommodity struct {
	Name   string  `json:"name" description:"名称"`
	Number int     `json:"number" description:"数量"`
	Money  float64 `json:"money" description:"金额"`
}

type EarlyWarning struct {
	ProjectName     string  `json:"project_name" description:"项目"`
	Type            string  `json:"type" description:"分类"`
	Name            string  `json:"name" description:"名称"`
	Unit            string  `json:"unit" description:"单位"`
	StockLowerLimit float64 `json:"stock_lower_limit" description:"库存下限"`
	CurrentStock    float64 `json:"current_stock" description:"当前库存"`
}

type CheckStockList struct {
	Id          int    `json:"id"`
	Code        string `json:"code"`
	EventTime   string `json:"event_time"`
	Description string `json:"description"`
}

type CommodityInfo struct {
	Id                    int                     `json:"id"`
	Name                  string                  `json:"name"`
	StockQuantity         float64                 `json:"stock_quantity"`
	RealQuantity          float64                 `json:"real_quantity"`
	CommdityFormat        string                  `json:"commodity_format"`
	CommodityAliasname    string                  `json:"commodity_aliasname"`
	CommodityBrand        string                  `json:"commodity_brand"`
	CommodityCode         string                  `json:"commodity_code"`
	CommodityEncode       string                  `json:"commodity_encode"`
	CommodityIsuseAlias   int                     `json:"commodity_isuse_alias"`
	CommodityName         string                  `json:"commodity_name"`
	CommodityNamepy       string                  `json:"commodity_namepy"`
	CommodityStandardcode string                  `json:"commodity_standardcode"`
	CommodityStandardname string                  `json:"commodity_standardname"`
	CommodityUnit         string                  `json:"commodity_unit"`
	CommodityVender       string                  `json:"commodity_vender"`
	ConCategoryID         int64                   `json:"con_category_id"`
	ConCategoryName       string                  `json:"con_category_name"`
	ConCommodityID        int64                   `json:"con_commodity_id"`
	TopCategoryID         int64                   `json:"top_category_id"`
	Constprice            float64                 `json:"constprice"`
	CommodityBatchList    []CommodityBatchListAll `json:"commodity_batch_list"`
}

type CommodityBatchList struct {
	ConCommodityID int     `json:"con_commodity_id"`
	CommodityBatch string  `json:"commodity_batch"`
	Price          float64 `json:"price"`
	Quantity       float64 `json:"quantity"`
	//BatchList      []BatchList `json:"batch_list"`
}

type CommodityBatchListAll struct {
	ConCommodityID int     `json:"con_commodity_id"`
	CommodityBatch string  `json:"commodity_batch"`
	Price          float64 `json:"price"`
	Quantity       float64 `json:"quantity"`
}

type BatchList struct {
	Price          float64 `json:"price"`
	Quantity       float64 `json:"quantity"`
	ConCommodityID int     `json:"con_commodity_id"`
	CommodityBatch string  `json:"commodity_batch"`
}

type StockChecks struct {
	ID               int                `json:"id"`
	Code             string             `json:"code"`
	Eventtime        string             `json:"eventtime"`
	Description      string             `json:"description"`
	StockCheckModels []*StockCheckModel `json:"stock_check_models"`
}

type StockCheckModel struct {
	ID                    int     `json:"id"`
	Actualquantity        float64 `json:"actualquantity"`
	CommdityFormat        string  `json:"commodity_format"`
	CommodityAliasname    string  `json:"commodity_aliasname"`
	CommodityBrand        string  `json:"commodity_brand"`
	CommodityCode         string  `json:"commodity_code"`
	CommodityEncode       string  `json:"commodity_encode"`
	CommodityIsuseAlias   int     `json:"commodity_isuse_alias"`
	CommodityName         string  `json:"commodity_name"`
	CommodityNamepy       string  `json:"commodity_namepy"`
	CommodityStandardcode string  `json:"commodity_standardcode"`
	CommodityStandardname string  `json:"commodity_standardname"`
	CommodityUnit         string  `json:"commodity_unit"`
	CommodityVender       string  `json:"commodity_vender"`
	ConCategoryID         int64   `json:"con_category_id"`
	ConCategoryName       string  `json:"con_category_name"`
	ConCommodityID        int64   `json:"con_commodity_id"`
	Constprice            float64 `json:"constprice"`
	Firmquantity          float64 `json:"firmquantity"`
	TopCategoryID         int64   `json:"top_category_id"`
	CommodityBatch        string  `json:"commodity_batch"`
	BatchPrice            float64 `json:"batch_price"`
	Last30DayCount        float64 `json:"last_30_day_count"` // 30天消耗量
}

type LotNumberListByCommodityBatch struct {
	ID             int     `json:"id"`
	LotNumber      string  `json:"lot_number"`
	ConCommodityID int     `json:"con_commodity_id"`
	Quantity       float64 `json:"quantity"`
	CountID        int     `json:"count_id"`
	CommodityBatch string  `json:"commodity_batch"`
}

type NewByStatistics struct {
	ID             int     `json:"id"`
	ConCommodityID int     `json:"con_commodity_id"`
	Costmoney      float64 `json:"costmoney"`
	Quantity       float64 `json:"quantity"`
	Saleprice      float64 `json:"saleprice"`
	Code           string  `json:"code"`
	Name           string  `json:"name"`
	Unit           string  `json:"unit"`
	Vender         string  `json:"vender"`
	Format         string  `json:"format"`
	ConCategoryId  int64   `json:"con_category_id"`
	AliasName      string  `json:"aliasname"`
	IsUseAlias     string  `json:"isuse_alias"`
}

type NewByStatisticsByID struct {
	ID             int     `json:"id"`
	ConCommodityID int     `json:"con_commodity_id"`
	Costmoney      float64 `json:"costmoney"`
	Quantity       float64 `json:"quantity"`
	Saleprice      float64 `json:"saleprice"`
	Code           string  `json:"code"`
	Name           string  `json:"name"`
	Unit           string  `json:"unit"`
	Vender         string  `json:"vender"`
	Format         string  `json:"format"`
	ConCategoryId  int64   `json:"con_category_id"`
	LotNumber      string  `json:"lot_number"`
	CommodityBatch string  `json:"commodity_batch"`
	Validity       string  `json:"validity"`
	AliasName      string  `json:"aliasname"`
	IsUseAlias     string  `json:"isuse_alias"`
}

type CategoryIds struct {
	Ids     string `json:"ids"`
	Keyword string `json:"keyword"`
}

type CategoryList struct {
	ID           int            `json:"id"`
	CategoryID   int            `json:"category_id"`
	OrderValue   int            `json:"ordervalue"`
	Name         string         `json:"name"`
	CategoryList []CategoryList `json:"categoryList"`
}

type NewWarehousingParamModel struct {
	// 编号
	Code string `json:"code"`
	// 公司ID
	ConCompanyID int64 `json:"con_company_id"`
	// 公司名字
	ConCompanyName string `json:"con_company_name"`
	// 服务人员ID
	ConEmployeeID int64 `json:"con_employee_id"`
	// 服务人员名字
	ConEmployeeName string `json:"con_employee_name"`
	// 具体的商品数据
	DetailData []NewDetailData `json:"detail_data"`
	// 发送时间
	Eventtime string `json:"eventtime"`
	// 是否结清
	IsPayover int `json:"is_payover"`
	// 是否自动采购
	IsAuto int `json:"is_auto"`
	// 入库单ID
	ID          int64 `json:"id"`
	Type        int   `json:"type"`
	IsCanDelete bool  `json:"iscandelete"`
	IsPurchase  int   `json:"is_purchase"`
	// 以下model 是结算单相关
	// 结算单号
	SettlementCode string `json:"settlement_code"`
	// 合计
	Total float64 `json:"total"`
	// 修改前的原来的总计
	OriginalTotal float64 `json:"original_total"`
	//OrderId       int     `json:"order_id"`
	// 备注
	Discription string `json:"discription"`
	// 结算单详情
	BillDetailData        []NewBillDetailData `json:"bill_detail_data"`
	PurchaseOrderNumber   string              `gorm:"column:purchase_order_number;NOT NULL" json:"purchase_order_number"`   // 采购单号
	PurchaseOrderId       int64               `gorm:"column:purchase_order_id;default:0;NOT NULL" json:"purchase_order_id"` // 采购单 id
	ReturnGoodsNumber     string              `json:"return_goods_number"`                                                  // 退货商品的采购单号
	ShopReturnGoodsNumber string              `json:"shop_return_goods_number"`                                             // 商城退货单号
	AddNote               string              `json:"add_note"`                                                             // 添加备注
	ReceiveId             int                 `json:"receive_id"`
	ReceiveSN             string              `json:"receive_sn"`
	IsCommodityDeposit    int                 `json:"is_commodity_deposit"` // 是否是入库方来的  0 是 显示 1 不是(寄存来的)
}

type NewDetailData struct {
	PurchaseUnitRatio float64 `json:"purchase_unit_ratio"`
	StockType         int     `json:"stock_type"` /// 0:入库 1：出库   2 退货
	// 单价
	WholesalePrice        float64 `json:"whole_saleprice"` // 出库时候的批发价 (默认选择商品设置的价格)
	ReturnPrice           float64 `json:"return_price"`    // 退货时候的退货价 (默认选择商品批次的价格)
	Buyprice              float64 `json:"buyprice"`
	Sellprice             float64 `json:"sellprice"`
	Retreatprice          float64 `json:"retreatprice"`
	Payprice              float64 `json:"payprice"`
	Costprice             float64 `json:"costprice"`
	CommdityFormat        string  `json:"commodity_format"`
	CommodityAliasname    string  `json:"commodity_aliasname"`
	CommodityBrand        string  `json:"commodity_brand"`
	CommodityCode         string  `json:"commodity_code"`
	CommodityEncode       string  `json:"commodity_encode"`
	CommodityIsuseAlias   int     `json:"commodity_isuse_alias"`
	CommodityName         string  `json:"commodity_name"`
	CommodityNamepy       string  `json:"commodity_namepy"`
	CommodityStandardcode string  `json:"commodity_standardcode"`
	CommodityStandardname string  `json:"commodity_standardname"`
	CommodityUnit         string  `json:"commodity_unit"`
	CommodityVender       string  `json:"commodity_vender"`
	//Premium               float64 `json:"补差价"`
	// 分类 id
	ConCategoryID int64 `json:"con_category_id"`
	// 分类 名称
	ConCategoryName string `json:"con_category_name"`
	// 商品 id
	ConCommodityID int64 `json:"con_commodity_id"`
	// 采购商品数量
	Quantity        float64 `json:"quantity"`
	ReceiveDetailId int     `json:"receive_detail_id"`
	// 采购单 id
	StockinIoID int64 `json:"stockin_io_id"`
	// 商品顶级分类
	TopCategoryID int64 `json:"top_category_id"`
	// 变动之后的当前数量、 这个字段是程序运行中 计算得出、 保存到入库详情中使用的
	CurrentQuantity float64
	// 差值数量
	DifferenceQuantity float64
	// 变动之后的成本价、 这个字段是程序运行中 计算得出、 保存到入库详情中使用的
	CurrentCostprice float64
	// id
	ID int64 `json:"id"`
	// tag
	Tag int `json:"tag"`
	// 商品有效期列表
	Validity string `json:"validates" description:"有效期时间"`
	// 备注
	Description string `json:"description"`
	// 批号(自动批号系统生成,不给用户显示)
	LotNumber string `json:"lot_number"`
	// 商品批次 (商品批次,生成)
	CommodityBatch string `json:"commodity_batch"`
	// 批次对应价格
	BatchPrice          float64                 `json:"batch_price"`
	CommodityBatchList  []NewCommodityBatchList `json:"commodity_batch_list"`
	CommodityIsUseStock int                     `json:"commodity_isuse_stock"`
}

type NewCommodityBatchList struct {
	ConCommodityID int     `json:"con_commodity_id"`
	CommodityBatch string  `json:"commodity_batch"`
	Price          float64 `json:"price,omitempty"`
	Validity       string  `json:"validity,omitempty"`
	//Price             float64                           `json:"price"`
	Quantity float64 `json:"quantity,omitempty"`
	//// 到期天数
	BatchMaturityDays int            `json:"batch_maturity_days,omitempty"`
	BatchList         []NewBatchList `json:"batch_list"`
}

type NewBatchList struct {
	Price    float64 `json:"price"`
	Quantity float64 `json:"quantity,omitempty"`
	// 到期天数
	MaturityDays   int    `json:"maturity_days"`
	Validity       string `json:"validity,omitempty"`
	ConCommodityID int    `json:"con_commodity_id"`
	CommodityBatch string `json:"commodity_batch"`
}

type NewCommodityBatchListAll struct {
	ConCommodityID int     `json:"con_commodity_id"`
	CommodityBatch string  `json:"commodity_batch"`
	Price          float64 `json:"price"`
	Validity       string  `json:"validity,omitempty"`
	//Price             float64                           `json:"price"`
	Quantity float64 `json:"quantity,omitempty"`
	//// 到期天数
	BatchMaturityDays int `json:"batch_maturity_days"`
}

// 0：现金，1：银行卡，2：支付宝，3：微信支付， 6：预付款
type NewBillDetailData struct {
	Paytype int     `json:"paytype"`
	Money   float64 `json:"money"`
}

type LotNumberList struct {
	ID             int     `json:"id"`
	LotNumber      string  `json:"lot_number"`
	Quantity       float64 `json:"quantity"`
	CostMoney      float64 `json:"cost_money"`
	CommodityBatch string  `json:"commodity_batch"`
}

// CommodityList 删除入库单临时使用的model
type CommodityList struct {
	//  ID
	ID int `json:"id"`
	//  商品ID
	ConCommodityID int `json:"con_commodity_id"`
	// 数量
	Quantity        float64           `json:"quantity"`
	CommodityDetail []CommodityDetail `json:"commodity_detail"`
}

// CommodityDetail 删除入库单临时使用的model
type CommodityDetail struct {
	//  ID
	ID int `json:"id"`
	//  商品ID
	ConCommodityID int `json:"con_commodity_id"`
	// 批号
	LotNumber string `json:"lot_number"`
	// 数量
	Quantity float64 `json:"quantity"`
	CountID  int     `json:"count_id"`
}

type SettlementSheet struct {
	Code            string `json:"code"`
	ConCompanyID    int    `json:"con_company_id"`
	ConCompanyName  string `json:"con_company_name"`
	ConEmployeeID   int    `json:"con_employee_id"`
	ConEmployeeName string `json:"con_employee_name"`
	Eventtime       string `json:"eventtime"`
	ID              int    `json:"id"`
	// 账单总金额
	Paymoney    float64 `json:"paymoney"`
	Discription string  `json:"discription"`
	//PurchasePayFlag int     `json:"purchase_pay_flag"`
	// 账单实付金额
	Totalmoney       float64               `json:"totalmoney"`
	SettlementDetail []SettlementStatement `json:"settlement_detail"`
	// 按时间 优先结算 最早的单子
	//ByTime int `json:"by_time"`
	//// 按金额 优先结算 最小的单子
	//ByPrice int `json:"by_price"`
	// 支付方式
	BillDetailData []BillDetailData `json:"bill_detail_data"`
}

// 0：现金，1：银行卡，2：支付宝，3：微信支付， 6：预付款
type BillDetailData struct {
	Paytype int     `json:"paytype"`
	Money   float64 `json:"money"`
}

type SettlementStatement struct {
	ID              int    `json:"id"`
	Code            string `json:"code"`
	Discription     string `json:"discription"`
	Eventtime       string `json:"eventtime"`
	ConEmployeeID   int    `json:"con_employee_id"`
	ConEmployeeName string `json:"con_employee_name"`
	IsPayover       int    `json:"is_payover"`
	Type            int    `json:"type"`
	// 总金额
	SumMoney float64 `json:"sum_money"`
	// 历史结算
	HistoricalSettlementPrice float64 `json:"historical_settlement_price"`
	// 剩余待结算
	RemainingSettlementPrice float64 `json:"remaining_settlement_price"`
	// 本次结算
	ThisTimeSettlementPrice float64 `json:"this_time_settlement_price"`
	//IsPurchase              int     `json:"is_purchase"`
	//OrderID                 string  `json:"order_id"`
}
