diff --git a/src/schemas/inventory/purchaseorder.schema.js b/src/schemas/inventory/purchaseorder.schema.js new file mode 100644 index 0000000..4925571 --- /dev/null +++ b/src/schemas/inventory/purchaseorder.schema.js @@ -0,0 +1,44 @@ +import mongoose from 'mongoose'; +import { generateId } from '../../utils.js'; +const { Schema } = mongoose; + +const purchaseOrderSchema = new Schema( + { + _reference: { type: String, default: () => generateId()() }, + value: { type: Number, required: true }, + unit: { type: String, required: true }, + parent: { + type: Schema.Types.ObjectId, + refPath: 'parentType', + required: true, + }, + parentType: { + type: String, + required: true, + enum: ['filamentStock', 'partStock', 'productStock'], // Add other models as needed + }, + owner: { + type: Schema.Types.ObjectId, + refPath: 'ownerType', + required: true, + }, + ownerType: { + type: String, + required: true, + enum: ['user', 'subJob', 'stockAudit'], + }, + timestamp: { type: Date, default: Date.now }, + }, + { timestamps: true } +); + +// Add virtual id getter +purchaseOrderSchema.virtual('id').get(function () { + return this._id; +}); + +// Configure JSON serialization to include virtuals +purchaseOrderSchema.set('toJSON', { virtuals: true }); + +// Create and export the model +export const purchaseOrderModel = mongoose.model('purchaseOrder', purchaseOrderSchema); diff --git a/src/schemas/management/documentprinter.schema.js b/src/schemas/management/documentprinter.schema.js index 1ccbea1..f3bbf6b 100644 --- a/src/schemas/management/documentprinter.schema.js +++ b/src/schemas/management/documentprinter.schema.js @@ -32,6 +32,7 @@ const documentPrinterSchema = new Schema( }, connectedAt: { type: Date, default: null }, host: { type: Schema.Types.ObjectId, ref: 'host', required: true }, + vendor: { type: Schema.Types.ObjectId, ref: 'vendor', required: false }, queue: [{ type: Schema.Types.ObjectId, ref: 'documentJob', required: false }], }, { timestamps: true } diff --git a/src/schemas/production/job.schema.js b/src/schemas/production/job.schema.js index b8ad125..78f484a 100644 --- a/src/schemas/production/job.schema.js +++ b/src/schemas/production/job.schema.js @@ -12,8 +12,8 @@ const jobSchema = new mongoose.Schema( printers: [{ type: Schema.Types.ObjectId, ref: 'printer', required: false }], createdAt: { required: true, type: Date }, updatedAt: { required: true, type: Date }, - startedAt: { required: false, type: Date }, - finishedAt: { required: false, type: Date }, + startedAt: { required: false, type: Date, default: null }, + finishedAt: { required: false, type: Date, default: null }, gcodeFile: { type: Schema.Types.ObjectId, ref: 'gcodeFile', diff --git a/src/schemas/production/subjob.schema.js b/src/schemas/production/subjob.schema.js index 5447088..adbae06 100644 --- a/src/schemas/production/subjob.schema.js +++ b/src/schemas/production/subjob.schema.js @@ -39,8 +39,8 @@ const subJobSchema = new mongoose.Schema({ type: Date, default: Date.now, }, - startedAt: { required: false, type: Date }, - finishedAt: { required: false, type: Date }, + startedAt: { required: false, type: Date, default: null }, + finishedAt: { required: false, type: Date, default: null }, }); subJobSchema.virtual('id').get(function () {