Compare commits

..

2 Commits

Author SHA1 Message Date
61e4b666ef Implemented market places.
Some checks failed
farmcontrol/farmcontrol-ws/pipeline/head There was a failure building this commit
2026-03-13 23:32:34 +00:00
938d44d8dc Updated GCode file schema. 2026-03-13 22:56:08 +00:00
5 changed files with 37 additions and 0 deletions

View File

@ -38,6 +38,7 @@ import { shipmentModel } from './inventory/shipment.schema.js';
import { invoiceModel } from './finance/invoice.schema.js'; import { invoiceModel } from './finance/invoice.schema.js';
import { clientModel } from './sales/client.schema.js'; import { clientModel } from './sales/client.schema.js';
import { salesOrderModel } from './sales/salesorder.schema.js'; import { salesOrderModel } from './sales/salesorder.schema.js';
import { marketplaceModel } from './sales/marketplace.schema.js';
// Map prefixes to models and id fields // Map prefixes to models and id fields
export const models = { export const models = {
@ -315,4 +316,11 @@ export const models = {
label: 'Sales Order', label: 'Sales Order',
referenceField: '_reference', referenceField: '_reference',
}, },
MKT: {
model: marketplaceModel,
idField: '_id',
type: 'marketplace',
label: 'Marketplace',
referenceField: '_reference',
},
}; };

View File

@ -4,6 +4,7 @@ const { Schema } = mongoose;
const partSchema = new mongoose.Schema({ const partSchema = new mongoose.Schema({
part: { type: Schema.Types.ObjectId, ref: 'part', required: true }, part: { type: Schema.Types.ObjectId, ref: 'part', required: true },
partSku: { type: Schema.Types.ObjectId, ref: 'partSku', required: true },
quantity: { type: Number, required: true }, quantity: { type: Number, required: true },
}); });

View File

@ -15,6 +15,7 @@ const clientSchema = new mongoose.Schema(
{ {
_reference: { type: String, default: () => generateId()() }, _reference: { type: String, default: () => generateId()() },
name: { required: true, type: String }, name: { required: true, type: String },
marketplace: { type: mongoose.Schema.Types.ObjectId, ref: 'marketplace', required: false },
email: { required: false, type: String }, email: { required: false, type: String },
phone: { required: false, type: String }, phone: { required: false, type: String },
country: { required: false, type: String }, country: { required: false, type: String },

View File

@ -0,0 +1,26 @@
import mongoose from 'mongoose';
import { generateId } from '../../utils.js';
const marketplaceSchema = new mongoose.Schema(
{
_reference: { type: String, default: () => generateId()() },
name: { required: true, type: String },
provider: {
type: String,
required: true,
enum: ['ebay', 'etsy', 'tiktokShop'],
},
active: { required: true, type: Boolean, default: true },
// Provider-specific API configuration (flexible for eBay, Etsy, TikTok Shop)
config: { type: mongoose.Schema.Types.Mixed, default: {} },
},
{ timestamps: true }
);
marketplaceSchema.virtual('id').get(function () {
return this._id;
});
marketplaceSchema.set('toJSON', { virtuals: true });
export const marketplaceModel = mongoose.model('marketplace', marketplaceSchema);

View File

@ -18,6 +18,7 @@ const salesOrderSchema = new Schema(
totalTaxAmount: { type: Number, required: true, default: 0 }, totalTaxAmount: { type: Number, required: true, default: 0 },
timestamp: { type: Date, default: Date.now }, timestamp: { type: Date, default: Date.now },
client: { type: Schema.Types.ObjectId, ref: 'client', required: true }, client: { type: Schema.Types.ObjectId, ref: 'client', required: true },
marketplace: { type: Schema.Types.ObjectId, ref: 'marketplace', required: false },
state: { state: {
type: { type: String, required: true, default: 'draft' }, type: { type: String, required: true, default: 'draft' },
}, },