feat: added item transaction models

This commit is contained in:
Sathishkumar Krishnan
2022-01-07 07:17:35 +05:30
parent ae921ccc96
commit a22b2adc5c
2 changed files with 167 additions and 0 deletions

View File

@@ -59,6 +59,15 @@ const AUTHORIZATION_FAILURE_ERROR_MESSAGE =
const SubLevelTypes = ["POSITION", "BIN", "PALLET"]; const SubLevelTypes = ["POSITION", "BIN", "PALLET"];
const ItemTransactionTypes = [
"PUT",
"PICK",
"RESERVE",
"CHECK-IN",
"CHECK-OUT",
"RESERVE"
];
module.exports = { module.exports = {
UserActions, UserActions,
InventoryScopes, InventoryScopes,
@@ -75,4 +84,5 @@ module.exports = {
AREA_ADMIN_ROLE: "area-admin", AREA_ADMIN_ROLE: "area-admin",
AUTHENTICATION_FAILURE_ERROR_MESSAGE, AUTHENTICATION_FAILURE_ERROR_MESSAGE,
AUTHORIZATION_FAILURE_ERROR_MESSAGE, AUTHORIZATION_FAILURE_ERROR_MESSAGE,
ItemTransactionTypes,
}; };

View File

@@ -0,0 +1,157 @@
const mongoose = require("mongoose");
const { ItemTransactionTypes } = require("../config/constants");
const schema = new mongoose.Schema(
{
type: {
type: String,
required: true,
trim: true,
enum: ItemTransactionTypes,
},
performedOn: {
type: mongoose.Schema.Types.ObjectId,
ref: "Item",
},
performedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
},
},
{
timestamps: true,
discriminatorKey: "kind",
}
);
const ItemTransaction = mongoose.model("ItemTransaction", schema);
const PutItemTransaction = ItemTransaction.discriminator(
"Put",
new mongoose.Schema({
putQuantity: {
type: Number,
required: true,
},
})
);
const PickItemTransaction = ItemTransaction.discriminator(
"Pick",
new mongoose.Schema({
pickupQuantity: {
type: Number,
required: true,
},
})
);
const ReserveItemTransaction = ItemTransaction.discriminator(
"Reserve",
new mongoose.Schema({
reserveQuantity: {
type: Number,
required: true,
},
job: {
type: mongoose.Schema.Types.ObjectId,
required: true,
},
pickupDate: {
type: Date,
required: true,
},
})
);
const CheckInItemTransaction = ItemTransaction.discriminator(
"CheckIn",
new mongoose.Schema({
checkInMeterReading: {
type: Number,
required: true,
},
hasIssue: {
type: Boolean,
required: true,
},
issueDescription: {
type: String,
trim: true,
},
})
);
const CheckOutItemTransaction = ItemTransaction.discriminator(
"CheckOut",
new mongoose.Schema({
checkOutMeterReading: {
type: Number,
required: true,
},
job: {
type: mongoose.Schema.Types.ObjectId,
required: true,
},
usageReason: {
type: String,
trim: true,
},
})
);
const ReportItemTransaction = ItemTransaction.discriminator(
"Report",
new mongoose.Schema({
for: {
type: String,
required: true,
enum: ["LOCATION", "ISSUE", "INCIDENT"]
},
details: {
type: String,
trim: true,
},
})
);
const AdjustItemTransaction = ItemTransaction.discriminator(
"Adjust",
new mongoose.Schema({
lastRecordedQuantity: {
type: Number,
required: true,
},
recountedQuantity: {
type: Number,
required: true,
},
varianceRecordedInQuantity: {
type: Number,
required: true,
},
damagedQuantity: {
type: Number,
required: true,
},
totalAdjustment: {
type: Number,
required: true,
},
newAdjustedQuantity: {
type: Number,
required: true,
},
})
);
module.exports = {
ItemTransaction,
PutItemTransaction,
PickItemTransaction,
ReserveItemTransaction,
CheckInItemTransaction,
CheckOutItemTransaction,
ReportItemTransaction,
AdjustItemTransaction,
};