const system = require("../../../system");
const settings = require("../../../../config/settings");
const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => {
  return db.define("invoice", {
    merchantId: DataTypes.STRING, //个体工商户
    taxNo: DataTypes.STRING,
    merchantCode: DataTypes.STRING(20),
    merchantName: DataTypes.STRING(20),
    corporations: DataTypes.STRING(20),
    identityCode: DataTypes.STRING(20),
    bank: DataTypes.INTEGER,
    uid: DataTypes.STRING(32), //用户id
    type: DataTypes.STRING, //发票类型
    purchaserName: DataTypes.STRING, //购买方名称
    purPhoneAddr: DataTypes.STRING(200), //购买方电话和地址
    purBankAcc: DataTypes.STRING(200), //购买方开户行和帐户
    mailAddr: DataTypes.STRING(200), //邮寄地址
    mailTo: DataTypes.STRING,
    mailMobile: DataTypes.STRING,
    status: DataTypes.INTEGER,
    isPay: DataTypes.INTEGER,
    amount: DataTypes.STRING(100), //开票金额
    statementsUrl: DataTypes.STRING(300), //结算单链接
    contractUrl: DataTypes.STRING(300) //合同链接


    // businessmen_id: DataTypes.BIGINT,
    // applyNo: DataTypes.STRING(64),
    // invoiceAmt: DataTypes.BIGINT,

    // tryIncomeTax: DataTypes.BIGINT,
    // tryAddedValueTax: DataTypes.BIGINT,
    // tryServiceTax: DataTypes.BIGINT,
    // trySpecialTax: DataTypes.BIGINT,
    // tryMonthAmt: DataTypes.BIGINT,

    // incomeTax: DataTypes.BIGINT,
    // addedValueTax: DataTypes.BIGINT,
    // serviceTax: DataTypes.BIGINT,
    // specialTax: DataTypes.BIGINT,
    // monthAmt: DataTypes.BIGINT,

    // settleImg: DataTypes.STRING(300),
    // remark: DataTypes.STRING(200),
    // businessmenName: DataTypes.STRING(100),
    // businessmenCreditCode: DataTypes.STRING(100),
    // businessmenIsBank: {
    //   type: DataTypes.BOOLEAN,
    //   defaultValue: false
    // },
    // merchantName: DataTypes.STRING(100),
    // merchantTaxNo: DataTypes.STRING(64),
    // merchantInvoiceAddr: DataTypes.STRING(200),
    // merchantInvoiceMobile: DataTypes.STRING(30),
    // merchantAccountName: DataTypes.STRING(50),
    // merchantAccountPublic: DataTypes.STRING(50),
    // mailAddr: DataTypes.STRING(200),
    // mailTo: DataTypes.STRING(200),
    // mailMobile: DataTypes.STRING(200),
    // courierNo: DataTypes.STRING(64),
    // courierImg: DataTypes.STRING(300),

    // invoiceNo: DataTypes.STRING(64),
    // invoiceTime: DataTypes.DATE,
    // invoiceImg: DataTypes.STRING(300),
    // payVoucher: DataTypes.STRING(300),
    // invoiceStatus: DataTypes.STRING(4),
    // auditRemark: DataTypes.STRING(200),

    // taxNo: DataTypes.STRING(64),
    // taxTime: DataTypes.DATE,
    // taxVoucher: DataTypes.STRING(300),
  }, {
    timestamps: true,
    paranoid: true, //假的删除
    underscored: true,
    version: true,
    freezeTableName: true,
    //freezeTableName: true,
    // define the table's name
    tableName: 'invoice',
    validate: {},
    indexes: [
      // Create a unique index on email
      //  {
      //    unique: true,
      //    fields: ['email']
      //  },
      //
      //  // Creates a gin index on data with the jsonb_path_ops operator
      //  {
      //    fields: ['data'],
      //    using: 'gin',
      //    operator: 'jsonb_path_ops'
      //  },
      //
      //  // By default index name will be [table]_[fields]
      //  // Creates a multi column partial index
      //  {
      //    name: 'public_by_author',
      //    fields: ['author', 'status'],
      //    where: {
      //      status: 'public'
      //    }
      //  },
      //
      //  // A BTREE index with a ordered field
      //  {
      //    name: 'title_index',
      //    method: 'BTREE',
      //    fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}]
      //  }
    ]
  });
}