From 88952fbde250f424d9bbb2df6ef26d60c6f391a8 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Wed, 3 Dec 2025 03:40:10 +0000 Subject: [PATCH] Added purchase orders and couriers. --- .../schemas/inventory/purchaseorder.schema.js | 35 +++++++------------ .../schemas/management/courier.schema.js | 23 ++++++++++++ .../management/courierservice.schema.js | 24 +++++++++++++ .../schemas/management/part.schema.js | 4 +-- .../schemas/sales/salesorder.schema.js | 0 5 files changed, 62 insertions(+), 24 deletions(-) create mode 100644 src/database/schemas/management/courier.schema.js create mode 100644 src/database/schemas/management/courierservice.schema.js create mode 100644 src/database/schemas/sales/salesorder.schema.js diff --git a/src/database/schemas/inventory/purchaseorder.schema.js b/src/database/schemas/inventory/purchaseorder.schema.js index 4925571..7c96150 100644 --- a/src/database/schemas/inventory/purchaseorder.schema.js +++ b/src/database/schemas/inventory/purchaseorder.schema.js @@ -2,32 +2,23 @@ import mongoose from 'mongoose'; import { generateId } from '../../utils.js'; const { Schema } = mongoose; +const itemSchema = new Schema({ + itemType: { type: String, required: true }, + item: { type: Schema.Types.ObjectId, refPath: 'itemType', required: true }, + quantity: { type: Number, required: true }, + price: { type: Number, required: true }, +}); + 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'], - }, + cost: { net: { type: Number, required: true }, gross: { type: Number, required: true } }, + items: [itemSchema], timestamp: { type: Date, default: Date.now }, + vendor: { type: Schema.Types.ObjectId, ref: 'vendor', required: true }, + state: { + type: { type: String, required: true, default: 'draft' }, + }, }, { timestamps: true } ); diff --git a/src/database/schemas/management/courier.schema.js b/src/database/schemas/management/courier.schema.js new file mode 100644 index 0000000..50c473e --- /dev/null +++ b/src/database/schemas/management/courier.schema.js @@ -0,0 +1,23 @@ +import mongoose from 'mongoose'; +import { generateId } from '../../utils.js'; + +const courierSchema = new mongoose.Schema( + { + _reference: { type: String, default: () => generateId()() }, + name: { required: true, type: String }, + website: { required: false, type: String }, + email: { required: false, type: String }, + phone: { required: false, type: String }, + contact: { required: false, type: String }, + country: { required: false, type: String }, + }, + { timestamps: true } +); + +courierSchema.virtual('id').get(function () { + return this._id; +}); + +courierSchema.set('toJSON', { virtuals: true }); + +export const courierModel = mongoose.model('courier', courierSchema); diff --git a/src/database/schemas/management/courierservice.schema.js b/src/database/schemas/management/courierservice.schema.js new file mode 100644 index 0000000..2d264e8 --- /dev/null +++ b/src/database/schemas/management/courierservice.schema.js @@ -0,0 +1,24 @@ +import mongoose from 'mongoose'; +import { generateId } from '../../utils.js'; +const { Schema } = mongoose; + +const courierServiceSchema = new mongoose.Schema( + { + _reference: { type: String, default: () => generateId()() }, + name: { required: true, type: String }, + courier: { type: Schema.Types.ObjectId, ref: 'courier', required: true }, + active: { required: true, type: Boolean }, + tracked: { required: true, type: Boolean }, + deliveryTime: { required: true, type: Number }, + website: { required: false, type: String }, + }, + { timestamps: true } +); + +courierServiceSchema.virtual('id').get(function () { + return this._id; +}); + +courierServiceSchema.set('toJSON', { virtuals: true }); + +export const courierServiceModel = mongoose.model('courierService', courierServiceSchema); diff --git a/src/database/schemas/management/part.schema.js b/src/database/schemas/management/part.schema.js index ba66918..0fca23a 100644 --- a/src/database/schemas/management/part.schema.js +++ b/src/database/schemas/management/part.schema.js @@ -8,9 +8,9 @@ const partSchema = new Schema( _reference: { type: String, default: () => generateId()() }, name: { type: String, required: true }, fileName: { type: String, required: false }, - globalPricing: { type: Boolean, default: true }, priceMode: { type: String, default: 'margin' }, - amount: { type: Number, required: false }, + price: { type: Number, required: true }, + cost: { type: Number, required: true }, margin: { type: Number, required: false }, vendor: { type: Schema.Types.ObjectId, ref: 'vendor', required: true }, file: { type: mongoose.SchemaTypes.ObjectId, ref: 'file', required: false }, diff --git a/src/database/schemas/sales/salesorder.schema.js b/src/database/schemas/sales/salesorder.schema.js new file mode 100644 index 0000000..e69de29