Added purchase orders and couriers.

This commit is contained in:
Tom Butcher 2025-12-03 03:40:10 +00:00
parent 5dd4d9275b
commit 88952fbde2
5 changed files with 62 additions and 24 deletions

View File

@ -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 }
);

View File

@ -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);

View File

@ -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);

View File

@ -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 },