payservedb 9.2.8 → 9.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +2 -2
- package/ZOHO_INTEGRATION_SCHEMA.md +644 -644
- package/index.js +416 -415
- package/package.json +17 -17
- package/src/models/InvoiceWithholdingTax.js +67 -67
- package/src/models/account.js +52 -52
- package/src/models/agent_departments.js +59 -59
- package/src/models/agent_notifications.js +53 -53
- package/src/models/agent_performance.js +127 -127
- package/src/models/agent_roles.js +77 -77
- package/src/models/agents.js +154 -154
- package/src/models/apilog.js +18 -18
- package/src/models/approvalsWorkflows.js +49 -49
- package/src/models/archivedapilog.js +18 -18
- package/src/models/asset.js +92 -92
- package/src/models/assetsAssignment.js +64 -64
- package/src/models/auditTrail.js +346 -346
- package/src/models/auto_reply_rule.js +68 -68
- package/src/models/bankdetails.js +47 -47
- package/src/models/billerAddress.js +124 -124
- package/src/models/booking_invoice.js +165 -165
- package/src/models/bookinganalytics.js +63 -63
- package/src/models/bookingconfig.js +45 -45
- package/src/models/bookingproperty.js +179 -179
- package/src/models/bookingreservation.js +239 -239
- package/src/models/bookingrevenuerecord.js +84 -84
- package/src/models/budget.js +95 -95
- package/src/models/budgetCategory.js +19 -19
- package/src/models/campaigns.js +108 -108
- package/src/models/cashpayment.js +290 -290
- package/src/models/combinedUnits.js +62 -62
- package/src/models/combined_invoice.js +424 -424
- package/src/models/common_area_electricity.js +38 -38
- package/src/models/common_area_generator.js +41 -41
- package/src/models/common_area_utility_alert.js +37 -37
- package/src/models/common_area_water.js +39 -39
- package/src/models/communication_status.js +33 -33
- package/src/models/communication_user_opt.js +32 -32
- package/src/models/community_guidelines.js +35 -35
- package/src/models/company.js +53 -53
- package/src/models/coreBaseSettings.js +16 -16
- package/src/models/coreInvoiceSettings.js +100 -100
- package/src/models/counter_schema.js +21 -21
- package/src/models/country_tax.js +42 -42
- package/src/models/currency_settings.js +39 -39
- package/src/models/customer.js +234 -234
- package/src/models/customer_preference.js +52 -52
- package/src/models/customer_satisfaction_survey.js +297 -297
- package/src/models/customer_surveys.js +139 -139
- package/src/models/customer_tickets.js +237 -237
- package/src/models/dailyChecklist.js +312 -312
- package/src/models/default_payment_details.js +17 -17
- package/src/models/deliveryTimeMarks.js +18 -18
- package/src/models/document_type.js +19 -19
- package/src/models/dutyRosterChecklist.js +250 -250
- package/src/models/dutyroster.js +136 -136
- package/src/models/email.js +37 -37
- package/src/models/email_cc_config.js +48 -48
- package/src/models/email_sms_queue.js +61 -61
- package/src/models/email_thread.js +35 -35
- package/src/models/entry_exit.js +53 -53
- package/src/models/expense.js +99 -99
- package/src/models/expense_category.js +45 -45
- package/src/models/facility.js +76 -76
- package/src/models/facilityBillingPrices.js +29 -29
- package/src/models/facilityInvoice.js +240 -240
- package/src/models/facilityInvoicePayment.js +52 -52
- package/src/models/facilityInvoiceRecipient.js +32 -32
- package/src/models/facilityWalletTransactionsMetadata.js +236 -236
- package/src/models/facility_departements.js +20 -20
- package/src/models/facility_etims_config.js +116 -116
- package/src/models/facility_payment_details.js +20 -20
- package/src/models/facility_rating.js +78 -78
- package/src/models/facilityasset.js +25 -25
- package/src/models/faq.js +15 -15
- package/src/models/gl_account_double_entries.js +25 -25
- package/src/models/gl_accounts.js +56 -56
- package/src/models/gl_entries.js +49 -49
- package/src/models/goodsReceivedNotes.js +115 -115
- package/src/models/guard.js +47 -47
- package/src/models/handover.js +258 -258
- package/src/models/inspection_category.js +38 -38
- package/src/models/invoice.js +528 -528
- package/src/models/invoiceCreditAdjustment.js +45 -45
- package/src/models/invoice_edit_log.js +81 -81
- package/src/models/invoice_generation_approval.js +86 -86
- package/src/models/invoicing_schedule.js +40 -40
- package/src/models/item_inspection.js +96 -96
- package/src/models/knowledge_base.js +109 -109
- package/src/models/knowledge_base_rating.js +44 -44
- package/src/models/leaseagreement.js +243 -243
- package/src/models/leasetemplate.js +17 -17
- package/src/models/levy.js +212 -212
- package/src/models/levy_deposits.js +126 -126
- package/src/models/levy_invoice_settings.js +26 -26
- package/src/models/levy_payment_receipt.js +156 -156
- package/src/models/levycontract.js +213 -226
- package/src/models/levytype.js +23 -23
- package/src/models/maintenance_service_vendor.js +38 -38
- package/src/models/maintenance_services.js +17 -17
- package/src/models/maintenancerequisition.js +31 -31
- package/src/models/master_workplan.js +32 -32
- package/src/models/master_workplan_child.js +34 -34
- package/src/models/message.js +38 -38
- package/src/models/module.js +21 -21
- package/src/models/movein_amenity.js +13 -13
- package/src/models/movein_application.js +28 -28
- package/src/models/movein_audit_log.js +21 -21
- package/src/models/movein_booking.js +33 -33
- package/src/models/movein_commission.js +46 -46
- package/src/models/movein_conversation.js +25 -25
- package/src/models/movein_deal.js +79 -79
- package/src/models/movein_disbursement.js +36 -36
- package/src/models/movein_email_thread.js +19 -19
- package/src/models/movein_enquiry.js +16 -16
- package/src/models/movein_featured_package.js +16 -16
- package/src/models/movein_handoff_token.js +16 -16
- package/src/models/movein_invoice.js +24 -24
- package/src/models/movein_landlord.js +18 -18
- package/src/models/movein_landlord_user.js +20 -20
- package/src/models/movein_lease.js +37 -37
- package/src/models/movein_message.js +27 -27
- package/src/models/movein_notification.js +27 -27
- package/src/models/movein_otp.js +14 -14
- package/src/models/movein_payment.js +46 -46
- package/src/models/movein_reminder.js +77 -77
- package/src/models/movein_reservation.js +31 -31
- package/src/models/movein_settings.js +25 -25
- package/src/models/movein_tenancy.js +55 -55
- package/src/models/movein_unit.js +59 -59
- package/src/models/movein_user.js +15 -15
- package/src/models/movein_viewing_slot.js +21 -21
- package/src/models/movein_want_unit.js +20 -20
- package/src/models/notification.js +44 -44
- package/src/models/paymentTermsMarks.js +19 -19
- package/src/models/penalty.js +76 -76
- package/src/models/pendingCredentials.js +32 -32
- package/src/models/powerMeterCommunicationProtocol.js +17 -17
- package/src/models/powerMeterCustomerAccount.js +78 -78
- package/src/models/powerMeterCustomerBand.js +14 -14
- package/src/models/powerMeterDailyReading.js +30 -30
- package/src/models/powerMeterGateways.js +40 -40
- package/src/models/powerMeterMonthlyReading.js +34 -34
- package/src/models/powerMeterPowerCharges.js +85 -85
- package/src/models/powerMeterSettings.js +211 -211
- package/src/models/powerMeterSingleDayReading.js +32 -32
- package/src/models/powerMeters.js +149 -149
- package/src/models/powerMetersManufacturer.js +14 -14
- package/src/models/power_invoice.js +371 -366
- package/src/models/power_meter_account.js +81 -81
- package/src/models/power_meter_command_logs.js +30 -30
- package/src/models/power_meter_command_queue.js +33 -33
- package/src/models/power_meter_negative_balance.js +44 -44
- package/src/models/power_prepaid_credits.js +47 -47
- package/src/models/power_prepaid_debits.js +53 -53
- package/src/models/power_prepaid_orders.js +78 -78
- package/src/models/power_sms_notification.js +26 -26
- package/src/models/privacy_policy.js +19 -19
- package/src/models/propertyManagementSettings.js +60 -0
- package/src/models/propertyManagerContract.js +556 -556
- package/src/models/propertyManagerRevenue.js +195 -195
- package/src/models/propertyManagerRevenueEntry.js +108 -0
- package/src/models/purchaseOrderInvoice.js +74 -74
- package/src/models/purchase_order.js +213 -213
- package/src/models/purchase_request.js +110 -110
- package/src/models/quickbooks_config.js +52 -52
- package/src/models/recipient_group.js +61 -61
- package/src/models/recipient_group_member.js +62 -62
- package/src/models/refresh_token.js +23 -23
- package/src/models/reminder.js +197 -197
- package/src/models/report.js +13 -13
- package/src/models/resident.js +121 -121
- package/src/models/rfq_details.js +131 -131
- package/src/models/rfq_response.js +153 -153
- package/src/models/service_charge_invoice_upload.js +42 -42
- package/src/models/service_charge_payments.js +27 -27
- package/src/models/servicerequest.js +55 -55
- package/src/models/settings.js +62 -62
- package/src/models/short_urls.js +21 -21
- package/src/models/smart_meter_daily_consumption.js +44 -44
- package/src/models/sms_africastalking.js +20 -20
- package/src/models/sms_balance_notification.js +26 -26
- package/src/models/sms_meliora.js +20 -20
- package/src/models/staff.js +36 -36
- package/src/models/stocksandspare.js +161 -161
- package/src/models/suppliers.js +79 -79
- package/src/models/terms_and_conditions.js +19 -19
- package/src/models/tickets.js +186 -186
- package/src/models/tickets_category.js +72 -72
- package/src/models/unitManagementTemplate.js +44 -44
- package/src/models/unitasset.js +25 -25
- package/src/models/units.js +148 -130
- package/src/models/user.js +186 -192
- package/src/models/valueaddedservices.js +50 -21
- package/src/models/vas_invoices_upload.js +50 -50
- package/src/models/vas_payments.js +24 -24
- package/src/models/vasinvoice.js +196 -196
- package/src/models/vasvendor.js +52 -52
- package/src/models/visitLog.js +95 -95
- package/src/models/visitor.js +67 -67
- package/src/models/waitlist.js +45 -45
- package/src/models/wallet.js +44 -44
- package/src/models/wallet_transaction.js +67 -67
- package/src/models/wallet_transactions.js +50 -50
- package/src/models/water_invoice.js +362 -396
- package/src/models/water_meter_Command_Queue.js +33 -33
- package/src/models/water_meter_account.js +86 -86
- package/src/models/water_meter_billing.js +58 -58
- package/src/models/water_meter_combined_accounts.js +92 -92
- package/src/models/water_meter_communication.js +17 -17
- package/src/models/water_meter_communication_logs.js +39 -39
- package/src/models/water_meter_concentrator.js +70 -70
- package/src/models/water_meter_daily_history.js +32 -32
- package/src/models/water_meter_high_risk.js +36 -36
- package/src/models/water_meter_iot_cards.js +34 -34
- package/src/models/water_meter_loan_deduction.js +134 -134
- package/src/models/water_meter_manufacturer.js +35 -35
- package/src/models/water_meter_monthly_history.js +36 -36
- package/src/models/water_meter_negative_amounts.js +44 -44
- package/src/models/water_meter_settings.js +296 -296
- package/src/models/water_meter_single_day_history.js +34 -34
- package/src/models/water_meter_size.js +15 -15
- package/src/models/water_meters.js +176 -176
- package/src/models/water_meters_delivery.js +76 -76
- package/src/models/water_prepaid_credit.js +47 -47
- package/src/models/water_prepaid_debit.js +50 -50
- package/src/models/whatsapp_conversation.js +23 -23
- package/src/models/workorder.js +49 -49
- package/src/models/zohoAccount.js +453 -453
- package/src/models/zohoIntegration.js +262 -262
- package/src/models/zohoItem.js +504 -504
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
const mongoose = require("mongoose");
|
|
2
|
-
|
|
3
|
-
// Every credit/debit is an immutable row — balance is derived from
|
|
4
|
-
// balanceAfter on the most recent row for a given customerId, same
|
|
5
|
-
// running-balance pattern used in the unit/customer SOA handlers.
|
|
6
|
-
const WalletTransactionSchema = new mongoose.Schema(
|
|
7
|
-
{
|
|
8
|
-
customerId: {
|
|
9
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
10
|
-
ref: "Customer",
|
|
11
|
-
required: true,
|
|
12
|
-
index: true, // NOT unique — a customer has MANY ledger entries over time
|
|
13
|
-
},
|
|
14
|
-
facilityId: {
|
|
15
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
16
|
-
ref: "Facility",
|
|
17
|
-
required: true,
|
|
18
|
-
index: true,
|
|
19
|
-
},
|
|
20
|
-
type: { type: String, enum: ["credit", "debit"], required: true },
|
|
21
|
-
source: {
|
|
22
|
-
type: String,
|
|
23
|
-
enum: [
|
|
24
|
-
"rental-income", // auto-detected incoming payment
|
|
25
|
-
"expense-deduction", // management fee, maintenance cost, etc.
|
|
26
|
-
"withdrawal-request", // debit created when landlord requests payout
|
|
27
|
-
"withdrawal-reversal", // corrective credit if a withdrawal needs reversing
|
|
28
|
-
"manual-adjustment",
|
|
29
|
-
],
|
|
30
|
-
required: true,
|
|
31
|
-
},
|
|
32
|
-
amount: { type: Number, required: true }, // always positive; type determines sign
|
|
33
|
-
balanceAfter: { type: Number }, // running balance snapshot
|
|
34
|
-
status: {
|
|
35
|
-
type: String,
|
|
36
|
-
enum: ["pending", "completed", "rejected"],
|
|
37
|
-
default: "completed",
|
|
38
|
-
},
|
|
39
|
-
reference: { type: String }, // bank txn ref, invoice number, withdrawal request id
|
|
40
|
-
detectedPaymentId: {
|
|
41
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
42
|
-
ref: "CashPayment",
|
|
43
|
-
index: true,
|
|
44
|
-
sparse: true,
|
|
45
|
-
}, // idempotency link — prevents double-crediting the same bank payment
|
|
46
|
-
notes: { type: String },
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
timestamps: true,
|
|
50
|
-
}
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
// Compound index: the query you'll run constantly is "give me the latest
|
|
54
|
-
// entry for this customer" — this makes that a fast indexed lookup instead
|
|
55
|
-
// of a collection scan as the ledger grows.
|
|
56
|
-
WalletTransactionSchema.index({ customerId: 1, createdAt: -1 });
|
|
57
|
-
|
|
58
|
-
// Idempotency guard at the DB level: a given detectedPaymentId should only
|
|
59
|
-
// ever produce one wallet credit, even if the payment-detection hook fires
|
|
60
|
-
// twice (retries, webhook redelivery, etc.)
|
|
61
|
-
WalletTransactionSchema.index(
|
|
62
|
-
{ detectedPaymentId: 1 },
|
|
63
|
-
{ unique: true, partialFilterExpression: { detectedPaymentId: { $exists: true } } }
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
const WalletTransaction = mongoose.model("WalletTransaction", WalletTransactionSchema);
|
|
67
|
-
|
|
1
|
+
const mongoose = require("mongoose");
|
|
2
|
+
|
|
3
|
+
// Every credit/debit is an immutable row — balance is derived from
|
|
4
|
+
// balanceAfter on the most recent row for a given customerId, same
|
|
5
|
+
// running-balance pattern used in the unit/customer SOA handlers.
|
|
6
|
+
const WalletTransactionSchema = new mongoose.Schema(
|
|
7
|
+
{
|
|
8
|
+
customerId: {
|
|
9
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
10
|
+
ref: "Customer",
|
|
11
|
+
required: true,
|
|
12
|
+
index: true, // NOT unique — a customer has MANY ledger entries over time
|
|
13
|
+
},
|
|
14
|
+
facilityId: {
|
|
15
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
16
|
+
ref: "Facility",
|
|
17
|
+
required: true,
|
|
18
|
+
index: true,
|
|
19
|
+
},
|
|
20
|
+
type: { type: String, enum: ["credit", "debit"], required: true },
|
|
21
|
+
source: {
|
|
22
|
+
type: String,
|
|
23
|
+
enum: [
|
|
24
|
+
"rental-income", // auto-detected incoming payment
|
|
25
|
+
"expense-deduction", // management fee, maintenance cost, etc.
|
|
26
|
+
"withdrawal-request", // debit created when landlord requests payout
|
|
27
|
+
"withdrawal-reversal", // corrective credit if a withdrawal needs reversing
|
|
28
|
+
"manual-adjustment",
|
|
29
|
+
],
|
|
30
|
+
required: true,
|
|
31
|
+
},
|
|
32
|
+
amount: { type: Number, required: true }, // always positive; type determines sign
|
|
33
|
+
balanceAfter: { type: Number }, // running balance snapshot
|
|
34
|
+
status: {
|
|
35
|
+
type: String,
|
|
36
|
+
enum: ["pending", "completed", "rejected"],
|
|
37
|
+
default: "completed",
|
|
38
|
+
},
|
|
39
|
+
reference: { type: String }, // bank txn ref, invoice number, withdrawal request id
|
|
40
|
+
detectedPaymentId: {
|
|
41
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
42
|
+
ref: "CashPayment",
|
|
43
|
+
index: true,
|
|
44
|
+
sparse: true,
|
|
45
|
+
}, // idempotency link — prevents double-crediting the same bank payment
|
|
46
|
+
notes: { type: String },
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
timestamps: true,
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
// Compound index: the query you'll run constantly is "give me the latest
|
|
54
|
+
// entry for this customer" — this makes that a fast indexed lookup instead
|
|
55
|
+
// of a collection scan as the ledger grows.
|
|
56
|
+
WalletTransactionSchema.index({ customerId: 1, createdAt: -1 });
|
|
57
|
+
|
|
58
|
+
// Idempotency guard at the DB level: a given detectedPaymentId should only
|
|
59
|
+
// ever produce one wallet credit, even if the payment-detection hook fires
|
|
60
|
+
// twice (retries, webhook redelivery, etc.)
|
|
61
|
+
WalletTransactionSchema.index(
|
|
62
|
+
{ detectedPaymentId: 1 },
|
|
63
|
+
{ unique: true, partialFilterExpression: { detectedPaymentId: { $exists: true } } }
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
const WalletTransaction = mongoose.model("WalletTransaction", WalletTransactionSchema);
|
|
67
|
+
|
|
68
68
|
module.exports = WalletTransaction;
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
const mongoose = require("mongoose");
|
|
2
|
-
|
|
3
|
-
// Define the schema for Wallet Transactions
|
|
4
|
-
const walletTransactionSchema = new mongoose.Schema(
|
|
5
|
-
{
|
|
6
|
-
walletId: {
|
|
7
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
8
|
-
ref: "Wallet",
|
|
9
|
-
required: true,
|
|
10
|
-
},
|
|
11
|
-
date: {
|
|
12
|
-
type: Date,
|
|
13
|
-
required: true,
|
|
14
|
-
default: Date.now,
|
|
15
|
-
},
|
|
16
|
-
amount: {
|
|
17
|
-
type: Number,
|
|
18
|
-
required: true,
|
|
19
|
-
min: 0.01,
|
|
20
|
-
},
|
|
21
|
-
transactionType: {
|
|
22
|
-
type: String,
|
|
23
|
-
required: true,
|
|
24
|
-
enum: ["topup", "deductable"],
|
|
25
|
-
},
|
|
26
|
-
description: {
|
|
27
|
-
type: String,
|
|
28
|
-
required: true,
|
|
29
|
-
},
|
|
30
|
-
facilityId: {
|
|
31
|
-
type: mongoose.Schema.Types.ObjectId,
|
|
32
|
-
ref: "Facility",
|
|
33
|
-
required: true,
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
timestamps: true,
|
|
38
|
-
},
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
// Index for efficient queries
|
|
42
|
-
walletTransactionSchema.index({ walletId: 1, facilityId: 1 });
|
|
43
|
-
walletTransactionSchema.index({ facilityId: 1, transactionType: 1 });
|
|
44
|
-
walletTransactionSchema.index({ date: -1 });
|
|
45
|
-
|
|
46
|
-
const WalletTransaction = mongoose.model(
|
|
47
|
-
"WalletTransaction",
|
|
48
|
-
walletTransactionSchema,
|
|
49
|
-
);
|
|
50
|
-
module.exports = WalletTransaction;
|
|
1
|
+
const mongoose = require("mongoose");
|
|
2
|
+
|
|
3
|
+
// Define the schema for Wallet Transactions
|
|
4
|
+
const walletTransactionSchema = new mongoose.Schema(
|
|
5
|
+
{
|
|
6
|
+
walletId: {
|
|
7
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
8
|
+
ref: "Wallet",
|
|
9
|
+
required: true,
|
|
10
|
+
},
|
|
11
|
+
date: {
|
|
12
|
+
type: Date,
|
|
13
|
+
required: true,
|
|
14
|
+
default: Date.now,
|
|
15
|
+
},
|
|
16
|
+
amount: {
|
|
17
|
+
type: Number,
|
|
18
|
+
required: true,
|
|
19
|
+
min: 0.01,
|
|
20
|
+
},
|
|
21
|
+
transactionType: {
|
|
22
|
+
type: String,
|
|
23
|
+
required: true,
|
|
24
|
+
enum: ["topup", "deductable"],
|
|
25
|
+
},
|
|
26
|
+
description: {
|
|
27
|
+
type: String,
|
|
28
|
+
required: true,
|
|
29
|
+
},
|
|
30
|
+
facilityId: {
|
|
31
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
32
|
+
ref: "Facility",
|
|
33
|
+
required: true,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
timestamps: true,
|
|
38
|
+
},
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
// Index for efficient queries
|
|
42
|
+
walletTransactionSchema.index({ walletId: 1, facilityId: 1 });
|
|
43
|
+
walletTransactionSchema.index({ facilityId: 1, transactionType: 1 });
|
|
44
|
+
walletTransactionSchema.index({ date: -1 });
|
|
45
|
+
|
|
46
|
+
const WalletTransaction = mongoose.model(
|
|
47
|
+
"WalletTransaction",
|
|
48
|
+
walletTransactionSchema,
|
|
49
|
+
);
|
|
50
|
+
module.exports = WalletTransaction;
|