feat: add inventory order

This commit is contained in:
sealday 2024-03-29 16:31:39 +08:00
parent 6d85d2f826
commit 1eda5609b7

View File

@ -0,0 +1,992 @@
import { defineCollection } from '@nocobase/database';
export default defineCollection({
dumpRules: 'required',
name: 'inventory_orders',
title: '盘点单',
fields: [
{
name: 'id',
type: 'bigInt',
interface: 'id',
parentKey: null,
reverseKey: null,
autoIncrement: true,
primaryKey: true,
allowNull: false,
uiSchema: {
type: 'number',
title: '{{t("ID")}}',
'x-component': 'InputNumber',
'x-read-pretty': true,
},
},
{
name: 'stock_id',
type: 'bigInt',
interface: 'integer',
description: null,
parentKey: null,
reverseKey: null,
isForeignKey: true,
uiSchema: {
type: 'number',
title: '仓库ID',
'x-component': 'InputNumber',
'x-read-pretty': true,
},
},
{
name: 'createdAt',
type: 'date',
interface: 'createdAt',
description: null,
parentKey: null,
reverseKey: null,
field: 'createdAt',
uiSchema: {
type: 'datetime',
title: '{{t("Created at")}}',
'x-component': 'DatePicker',
'x-component-props': {},
'x-read-pretty': true,
},
},
{
name: 'createdBy',
type: 'belongsTo',
interface: 'createdBy',
description: null,
parentKey: null,
reverseKey: null,
target: 'users',
foreignKey: 'createdById',
uiSchema: {
type: 'object',
title: '{{t("Created by")}}',
'x-component': 'AssociationField',
'x-component-props': {
fieldNames: {
value: 'id',
label: 'nickname',
},
},
'x-read-pretty': true,
},
targetKey: 'id',
},
{
name: 'updatedAt',
type: 'date',
interface: 'updatedAt',
description: null,
parentKey: null,
reverseKey: null,
field: 'updatedAt',
uiSchema: {
type: 'string',
title: '{{t("Last updated at")}}',
'x-component': 'DatePicker',
'x-component-props': {},
'x-read-pretty': true,
},
},
{
name: 'updatedBy',
type: 'belongsTo',
interface: 'updatedBy',
description: null,
parentKey: null,
reverseKey: null,
target: 'users',
foreignKey: 'updatedById',
uiSchema: {
type: 'object',
title: '{{t("Last updated by")}}',
'x-component': 'AssociationField',
'x-component-props': {
fieldNames: {
value: 'id',
label: 'nickname',
},
},
'x-read-pretty': true,
},
targetKey: 'id',
},
{
name: 'date',
type: 'date',
interface: 'datetime',
description: null,
parentKey: null,
reverseKey: null,
uiSchema: {
'x-component-props': {
dateFormat: 'YYYY-MM-DD',
gmt: false,
showTime: false,
},
type: 'string',
'x-component': 'DatePicker',
title: '日期',
},
defaultValue: null,
},
// {
// key: 'ldm77b3632h',
// name: 'items',
// type: 'hasMany',
// interface: 'o2m',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// foreignKey: 'record_id',
// onDelete: 'CASCADE',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: true,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '明细',
// },
// target: 'record_items',
// targetKey: 'id',
// sourceKey: 'id',
// },
// {
// key: '2j1xf8umz9x',
// name: 'contract',
// type: 'belongsTo',
// interface: 'm2o',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// foreignKey: 'contract_id',
// onDelete: 'SET NULL',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: false,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '合同',
// },
// target: 'contracts',
// targetKey: 'id',
// },
// {
// key: 'cml8kqtzhii',
// name: 'number',
// type: 'sequence',
// interface: 'sequence',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// patterns: [
// {
// type: 'integer',
// options: {
// digits: 6,
// start: 220161,
// key: 49879,
// },
// },
// ],
// uiSchema: {
// type: 'string',
// 'x-component': 'Input',
// 'x-component-props': {},
// title: '单号',
// },
// unique: true,
// inputable: true,
// match: false,
// },
// {
// key: '0mkllhb86rc',
// name: 'out_stock',
// type: 'belongsTo',
// interface: 'm2o',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// foreignKey: 'out_stock_id',
// onDelete: 'RESTRICT',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: false,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '出库',
// },
// target: 'project',
// targetKey: 'id',
// },
// {
// key: 'q8dy3q5o7r3',
// name: 'in_stock',
// type: 'belongsTo',
// interface: 'm2o',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// foreignKey: 'in_stock_id',
// onDelete: 'RESTRICT',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: false,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '入库',
// },
// target: 'project',
// targetKey: 'id',
// },
// {
// key: 'ea03bu06jls',
// name: 'movement',
// type: 'string',
// interface: 'radioGroup',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// enum: [
// {
// value: '1',
// label: '入库',
// },
// {
// value: '-1',
// label: '出库',
// },
// ],
// type: 'string',
// 'x-component': 'Radio.Group',
// title: '出入库',
// },
// },
// {
// key: 'mkc12sd41wg',
// name: 'original_number',
// type: 'string',
// interface: 'input',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// type: 'string',
// 'x-component': 'Input',
// title: '原始单号',
// },
// },
// {
// key: 'hy4ydt534ft',
// name: 'category',
// type: 'string',
// interface: 'select',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// enum: [
// {
// value: '0',
// label: '租赁',
// color: 'default',
// },
// {
// value: '1',
// label: '购销',
// color: 'orange',
// },
// {
// value: '2',
// label: '暂存',
// color: 'lime',
// },
// {
// value: '3',
// label: '盘点',
// color: 'blue',
// },
// {
// value: '4',
// label: '采购直发',
// color: 'volcano',
// },
// {
// value: '5',
// label: '租赁直发',
// color: 'geekblue',
// },
// ],
// type: 'string',
// 'x-component': 'Select',
// title: '类型',
// },
// },
// {
// key: 'bvwwt3et43u',
// name: 'weight',
// type: 'double',
// interface: 'number',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// 'x-component-props': {
// step: '0.001',
// stringMode: true,
// },
// type: 'number',
// 'x-component': 'InputNumber',
// title: '实际重量(吨)',
// },
// },
// {
// key: 'g437js8r7sz',
// name: 'comment',
// type: 'text',
// interface: 'textarea',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// type: 'string',
// 'x-component': 'Input.TextArea',
// title: '备注',
// },
// },
// {
// key: 'ji7s6ldo4vy',
// name: 'has_receipt',
// type: 'boolean',
// interface: 'checkbox',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// type: 'boolean',
// 'x-component': 'Checkbox',
// title: '回单联',
// 'x-component-props': {
// showUnchecked: true,
// },
// },
// },
// {
// key: 'mnoekrocktk',
// name: 'has_stub',
// type: 'boolean',
// interface: 'checkbox',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// type: 'boolean',
// 'x-component': 'Checkbox',
// title: '存根联',
// 'x-component-props': {
// showUnchecked: true,
// },
// },
// },
// {
// key: 'nv9g1q5l2c3',
// name: 'record_fee_items',
// type: 'hasMany',
// interface: 'o2m',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// foreignKey: 'record_id',
// onDelete: 'CASCADE',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: true,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '维修赔偿',
// },
// target: 'record_fee_items',
// targetKey: 'id',
// sourceKey: 'id',
// },
// {
// key: '70etku0lih0',
// name: 'price_items',
// type: 'hasMany',
// interface: 'o2m',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// foreignKey: 'record_id',
// onDelete: 'CASCADE',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: true,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '报价',
// },
// target: 'lease_rules',
// targetKey: 'id',
// sourceKey: 'id',
// },
// {
// key: 'tyiovb2lr9j',
// name: 'waybill',
// type: 'hasOne',
// interface: 'oho',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: 'xhtitznvoz8',
// foreignKey: 'record_id',
// onDelete: 'CASCADE',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: false,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '运输单',
// },
// target: 'waybills',
// sourceKey: 'id',
// },
// {
// key: '47l0fvsioht',
// name: 'vehicles',
// type: 'belongsToMany',
// interface: 'm2m',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: 'nfe3ol53h83',
// foreignKey: 'record_id',
// otherKey: 'vehicle_id',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: true,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '车辆',
// },
// target: 'vehicles',
// through: 'record_vehicles',
// targetKey: 'id',
// sourceKey: 'id',
// },
// {
// key: 'qxoncpeuum6',
// name: 'attrs',
// type: 'array',
// interface: 'multipleSelect',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// enum: [
// {
// value: '0',
// label: '自提',
// },
// {
// value: '1',
// label: '自送',
// },
// {
// value: '2',
// label: '转单',
// },
// {
// value: '3',
// label: '叉车',
// },
// ],
// type: 'array',
// 'x-component': 'Select',
// 'x-component-props': {
// mode: 'multiple',
// },
// title: '属性',
// },
// defaultValue: [],
// },
// {
// key: 'bm8di52tvx3',
// name: 'summarize',
// type: 'virtual',
// interface: 'calc2',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// dataType: 'jsCode',
// uiSchema: {
// 'x-component-props': {
// prefix: '',
// suffix: '',
// panel:
// "let total = 0;\n let allWeight = 0;\n const products = {};\n for (let i = 0; i < form.values.items.length; i++) {\n const item = form.values.items[i];\n // 计算 合计金额\n const count = item?.count || 0 ;\n const unitPrice = item?.unit_price || 0;\n // 换算数量\n let scale = 1;\n if (item && item.product && item.product?.ratio) {\n scale = item.product?.ratio;\n }\n total += count * scale * unitPrice;\n // 计算 理论重量\n let weight = 1;\n if (item && item.product && item.product?.weight) {\n weight = item.product.weight || 1;\n }\n\n allWeight += weight * count;\n // 计算 产品分类\n if (item && item.product) {\n if (products[item.product.name]) {\n products[item.product.name].count += count * scale;\n } else {\n products[item.product.name] = {\n count: count * scale,\n unit: item.product?.category?.conversion_unit || item.product?.category?.unit || '',\n };\n }\n }\n }\n // 生成产品分类的数据\n const weight = {\n key: '1',\n label: '理论重量',\n children: (allWeight / 1000).toFixed(3)+'吨',\n }\n // const totalPrice = {\n // key: '2',\n // label: '合计',\n // children: '¥' + total.toFixed(2),\n // }\n // ,, totalPrice\n items.push(weight)\n\n if (Object.keys(products).length > 0) {\n for (const key in products) {\n if (Object.prototype.hasOwnProperty.call(products, key)) {\n const value = products[key];\n items.push({\n key: key,\n label: key,\n children: value.count.toFixed(3) + value.unit,\n });\n }\n }\n }",
// },
// type: 'string',
// 'x-component': 'CalcResult',
// 'x-read-pretty': true,
// title: '小结',
// },
// },
// {
// key: 'f8vn55ksnrr',
// name: 'generated_records',
// type: 'hasMany',
// interface: 'o2m',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: '57w0sab2skk',
// foreignKey: 'direct_record_id',
// onDelete: 'CASCADE',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: true,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '生成单',
// },
// target: 'records',
// targetKey: 'id',
// sourceKey: 'id',
// },
// {
// key: '57w0sab2skk',
// name: 'direct_record',
// type: 'belongsTo',
// interface: 'm2o',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: 'f8vn55ksnrr',
// uiSchema: {
// title: '直发单',
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: false,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// },
// target: 'records',
// onDelete: 'CASCADE',
// targetKey: 'id',
// foreignKey: 'direct_record_id',
// sourceKey: 'id',
// },
// {
// key: 'ogcx63b4zwr',
// name: 'all_price',
// type: 'double',
// interface: 'number',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// 'x-component-props': {
// step: '0.01',
// stringMode: true,
// },
// type: 'number',
// 'x-component': 'InputNumber',
// title: '总金额',
// },
// },
// {
// key: 'v190ir8g24f',
// name: 'group_weight_items',
// type: 'hasMany',
// interface: 'o2m',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: 'caw2t3x4h8d',
// foreignKey: 'record_id',
// onDelete: 'CASCADE',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: true,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '分组重量明细(吨)',
// },
// target: 'record_group_weight_items',
// targetKey: 'id',
// sourceKey: 'id',
// },
// {
// key: 'br0n5rj8gu0',
// name: 'sign',
// type: 'json',
// interface: 'signatureSchema',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// type: 'signature',
// 'x-component': 'SignatureInput',
// title: '签名',
// },
// },
// {
// key: 'u12unasnh30',
// name: 'record_category',
// type: 'string',
// interface: 'radioGroup',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// enum: [
// {
// value: '0',
// label: '采购直发',
// color: 'magenta',
// },
// {
// value: '1',
// label: '租赁直发',
// color: 'purple',
// },
// {
// value: '2',
// label: '采购入库',
// color: 'orange',
// },
// {
// value: '3',
// label: '销售出库',
// color: 'orange',
// },
// {
// value: '4',
// label: '租赁入库',
// color: 'geekblue',
// },
// {
// value: '5',
// label: '租赁出库',
// color: 'geekblue',
// },
// {
// value: '6',
// label: '暂存入库',
// color: 'default',
// },
// {
// value: '7',
// label: '暂存出库',
// color: 'default',
// },
// {
// value: '8',
// label: '盘点',
// color: 'default',
// },
// ],
// type: 'string',
// 'x-component': 'Radio.Group',
// title: '记录单类型',
// },
// },
// {
// key: '23jztc2ebsj',
// name: 'contract_plan',
// type: 'belongsTo',
// interface: 'associated',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// targetKey: 'id',
// uiSchema: {
// 'x-component': 'AssociatedField',
// title: '合同方案',
// 'x-component-props': {
// collection: 'contract_plans',
// sourceCollection: 'contract_items',
// sourceField: 'contract_plan',
// fieldExp: '{{contract}}',
// dateFieldExp: '{{date}}',
// },
// },
// target: 'contract_plans',
// foreignKey: 'f_uwkwva2qof5',
// },
// {
// key: 'fv1iqjo8k3q',
// name: 'product_scope',
// type: 'virtual',
// interface: 'customAssociated',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// targetKey: 'id',
// uiSchema: {
// 'x-component': 'CustomAssociatedField',
// title: '产品范围',
// 'x-component-props': {
// component: 'RecordProductScope',
// },
// },
// target: 'product_category',
// },
// {
// key: 'vjwyenybw6n',
// name: 'content',
// type: 'virtual',
// interface: 'custom',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// type: 'string',
// 'x-component': 'CustomField',
// 'x-read-pretty': true,
// title: '内容',
// 'x-component-props': {
// component: 'RecordDetails',
// },
// },
// },
// {
// key: 'usij5wfudqo',
// name: 'projects',
// type: 'belongsToMany',
// interface: 'm2m',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// foreignKey: 'record_id',
// otherKey: 'project_id',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: true,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '项目',
// },
// through: 'record_projects',
// target: 'project',
// targetKey: 'id',
// sourceKey: 'id',
// },
// {
// key: 'e8zqyibffdg',
// name: 'print_count',
// type: 'bigInt',
// interface: 'integer',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// uiSchema: {
// type: 'number',
// 'x-component': 'InputNumber',
// 'x-component-props': {
// stringMode: true,
// step: '1',
// },
// 'x-validator': 'integer',
// title: '打印次数',
// },
// defaultValue: 0,
// },
// {
// key: 'aacw3d1txhr',
// name: 'in_contract',
// type: 'belongsTo',
// interface: 'm2o',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// foreignKey: 'in_contract_id',
// onDelete: 'SET NULL',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: false,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '入库合同',
// },
// target: 'contracts',
// targetKey: 'id',
// },
// {
// key: 'md9nj7w3fj9',
// name: 'out_contract',
// type: 'belongsTo',
// interface: 'm2o',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// foreignKey: 'out_contract_id',
// onDelete: 'SET NULL',
// uiSchema: {
// 'x-component': 'AssociationField',
// 'x-component-props': {
// multiple: false,
// fieldNames: {
// label: 'id',
// value: 'id',
// },
// },
// title: '出库合同',
// },
// target: 'contracts',
// targetKey: 'id',
// },
// {
// key: 's4a036s0uw5',
// name: 'in_contract_plan',
// type: 'belongsTo',
// interface: 'associated',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// targetKey: 'id',
// uiSchema: {
// 'x-component': 'AssociatedField',
// title: '入库合同方案',
// 'x-component-props': {
// collection: 'contract_plans',
// sourceCollection: 'contract_items',
// fieldExp: '{{in_contract}}',
// dateFieldExp: '{{date}}',
// sourceField: 'contract_plan',
// },
// },
// target: 'contract_plans',
// foreignKey: 'f_q33n38ivxtg',
// },
// {
// key: 'bq98tj92zw4',
// name: 'out_contract_plan',
// type: 'belongsTo',
// interface: 'associated',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// targetKey: 'id',
// uiSchema: {
// 'x-component': 'AssociatedField',
// title: '出库合同方案',
// 'x-component-props': {
// collection: 'contract_plans',
// sourceCollection: 'contract_items',
// sourceField: 'contract_plan',
// fieldExp: '{{out_contract}}',
// dateFieldExp: '{{date}}',
// },
// },
// target: 'contract_plans',
// foreignKey: 'f_xfr7qspwhwf',
// },
// {
// key: 'f7bt1rcjlfw',
// name: 'import',
// type: 'json',
// interface: 'json',
// description: null,
// collectionName: 'records',
// parentKey: null,
// reverseKey: null,
// defaultValue: null,
// uiSchema: {
// type: 'object',
// 'x-component': 'Input.JSON',
// 'x-component-props': {
// autoSize: {
// minRows: 5,
// },
// },
// default: null,
// title: '原始导入数据',
// },
// },
],
});