'use strict';

module.exports = app => {
  const mongoose = app.mongoose;
  const Schema = mongoose.Schema;

  const ChanpinSchema = new Schema({
    // 创建时间
    create_at: {
      type: Date,
      default: Date.now
    },
    // 更新时间
    update_at: {
      type: Date,
      default: Date.now
    },
    // 代码
    daima: {
      type: String,
      default: "",
      index: true,
      unique: true
    },
    // 品名
    pinming: {
      type: String,
      default: ""
    },
    // 规格型号
    guigexinghao: {
      type: String,
      default: ""
    },
    // 助记符
    zhujifu: {
      type: String,
      default: ""
    },
    // 计量单位
    jiliangdanwei: {
      type: String,
      default: ""
    },
    // 条形码
    tiaoxingma: {
      type: String,
      default: "",
      index: true,
    },
    // 箱装量
    xiangzhuangliang: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱装单位
    xiangzhuangdanwei: {
      type: String,
      default: ""
    },
    // 最大单位箱装量
    zuidadanweixiangzhuangliang: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大箱装单位
    zuidaxiangzhuangdanwei: {
      type: String,
      default: ""
    },
    // 产地
    chandi: {
      type: String,
      default: ""
    },
    // 主供应商
    zhugongyingshang: {
      type: String,
      default: ""
    },
    // 经销商
    jingxiaoshang: {
      type: String,
      default: ""
    },
    // 所属类别
    suoshuleibie: {
      type: String,
      default: ""
    },
    // 最高采购价
    zuigaocaigoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 商超价1
    shangchaojia1: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 现金价
    xianjinjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 二批流通价
    erpiliutongjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 商超价
    shangchaojia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 现金零售价
    xianjinlingshoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 商超零售价
    shangchaolingshoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 特通价
    tetongjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 分公司价
    fengongsijia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 零食店价
    shangchaolingshoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 初中高中价
    chuzhonggaozhongjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 车销价
    chexiaojia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 发货价11
    shangchaolingshoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 发货价12
    fahuojia12: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 进货税率%
    jinhuoshuilv: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 发货税率%
    fahuoshuilv: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 包装
    baozhuang: {
      type: String,
      default: ""
    },
    // 毛利率
    maolilv: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 主存放仓库
    zhucunfangcangku: {
      type: String,
      default: ""
    },
    // 有保质期
    youbaozhiqi: {
      type: String,
      default: ""
    },
    // 保质期(天)
    baozhiqi: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 有效?
    youxiao: {
      type: String,
      default: ""
    },
    // 采销类型
    caixiaoleixing: {
      type: String,
      default: ""
    },
    // 商品类型
    shangpinleixing: {
      type: String,
      default: ""
    },
    // 备注
    beizhu: {
      type: String,
      default: ""
    },
    // 单位重量
    danweizhongliang: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(4)) }
    },
    // 品牌
    pinpai: {
      type: String,
      default: ""
    },
    // 单位体积(立方米)
    danweitiji: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(4)) }
    },
    // 箱重量(kg)
    xiangzhongliang: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(4)) }
    },
    // 最大单位重量(kg)
    zuidadanweizhongliang: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(4)) }
    },
    // 箱体积(立方米)
    xiangtiji: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(4)) }
    },
    // 最大单位体积(立方米)
    zuidadanweitiji: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(4)) }
    },
    // 描述
    miaoshu: {
      type: String,
      default: ""
    },
    // 仓库出入库时,以‘箱装单位’为依准
    yixiangzhuangdanweiweiyizhun: {
      type: String,
      default: ""
    },
    // 打印‘流通随行单’
    liutongsuixingdan: {
      type: String,
      default: ""
    },
    // 发货产品
    fahuochanpin: {
      type: String,
      default: ""
    },
    // 标准核算价
    biaozhunhesuanjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 建议零售价
    jianyilingshoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最近一次采购价
    zuijinyicicaigoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最近一次销售价
    zuijinyicixiaoshoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱条形码
    xiangtiaoxingma: {
      type: String,
      default: "",
      index: true,
    },
    // 最大箱装条码
    zuidaxiangzhuangtiaoma: {
      type: String,
      default: "",
      index: true,
    },
    // 接口编码1
    jiekoubianma1: {
      type: String,
      default: ""
    },
    // 接口编码2
    jiekoubianma2: {
      type: String,
      default: ""
    },
    // 接口编码3
    jiekoubianma3: {
      type: String,
      default: ""
    },
    // 发货产品基数
    fahuochanpinjishu: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 采购最少数量
    caigouzuishaoshuliang: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 采购倍数
    caigoubeishu: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 采购滚动基数
    caigougundongjishu: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最小单位产品
    zuixiaodanweichanpin: {
      type: String,
      default: ""
    },
    // 最小单位倍数
    zuixiaodanweibeishu: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 产品归类
    chanpinguilei: {
      type: String,
      default: ""
    },
    // 产品归类II
    chanpinguilei2: {
      type: String,
      default: ""
    },
    // 箱单位最高采购价
    xiangdanweizuigaocaigoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位商超价1
    xiangdanweishangchaojia1: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位现金价
    xiangdanweixianjinjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位二批流通价
    xiangdanweierpiliutongjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位商超价
    xiangdanweishangchaojia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位现金零售价
    xiangdanweixianjinlingshoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位商超零售价
    xiangdanweishangchaolingshoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位特通价
    xiangdanweitetongjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位分公司价
    xiangdanweifengongsijia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位零食店价
    xiangdanweilingshidianjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位初中高中价
    xiangdanweichuzhonggaozhongjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位车销价
    xiangdanweichexiaojia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位发货价11
    xiangdanweifahuojia11: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 箱单位发货价12
    xiangdanweifahuojia12: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位最高采购价
    zuidadanweizuigaocaigoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位商超价1
    zuidadanweishangchaojia1: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位现金价
    zuidadanweixianjinjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位二批流通价
    zuidadanweierpiliutongjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位商超价
    zuidadanweishangchaojia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位现金零售价
    zuidadanweixianjinlingshoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位商超零售价
    zuidadanweishangchaolingshoujia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位特通价
    zuidadanweitetongjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位分公司价
    zuidadanweifengongsijia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位零食店价
    zuidadanweilingshidianjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位初中高中价
    zuidadanweichuzhonggaozhongjia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位车销价
    zuidadanweichexiaojia: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位发货价11
    zuidadanweifahuojia11: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单位发货价12
    zuidadanweifahuojia12: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 默认单据单位
    morendanjudanwei: {
      type: String,
      default: ""
    },
    // 不封箱单位
    bufengxiangdanwei: {
      type: String,
      default: ""
    },
    // 仓库提成类别
    cangkutichengleibie: {
      type: String,
      default: ""
    },
    // 强制批次管理
    qiangzhipiciguanli: {
      type: String,
      default: ""
    },
    // 立库存放区域
    likucunfangquyu: {
      type: String,
      default: ""
    },
    // 建档日期
    jiandangriqi: {
      type: Date,
      default: ""
    },
    // 出货是否加工
    chuhuoshifujiagong: {
      type: String,
      default: ""
    },
    // 保质期天数需大于
    baozhiqitianshuxudayu: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 单品重量误差
    danpinzhongliangwucha: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大单品重量误差百分比%
    zuidadanpinzhongliangwuchabaifenbi: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 最大箱重量误差
    zuidaxiangzhongliangwucha: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 价格调整时间
    jiagediaozhengshijian: {
      type: Date,
      default: ""
    },
    // 录入人
    lururen: {
      type: String,
      default: ""
    },
    // 允收天数
    yunshoutianshu: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    // 强制序列号管理
    qiangzhixuliehaoguanli: {
      type: String,
      default: ""
    },
    // 国标条形码
    guobiaotiaoxingma: {
      type: String,
      default: ""
    },
    // 长(cm)
    chang: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(4)) }
    },
    // 宽(cm)
    kuan: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(4)) }
    },
    // 高(cm)
    gao: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(4)) }
    },
    // 每托盘件数
    meituopanjianshu: {
      type: Number,
      default: 0,
      set: (val) => { return Number(Number(val).toFixed(2)) }
    },
    //数据是否删除
    isExit: {
      type: Number,
      default: 1,
      index: true
    },
  }, { strict: false });
  return mongoose.model('Chanpin', ChanpinSchema);
};