@deepintel-ltd/farmpro-contracts 1.0.2 → 1.0.4
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/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/routes/analytics.routes.d.ts +754 -0
- package/dist/routes/analytics.routes.d.ts.map +1 -0
- package/dist/routes/analytics.routes.js +24 -0
- package/dist/routes/auth.routes.d.ts +3836 -0
- package/dist/routes/auth.routes.d.ts.map +1 -0
- package/dist/routes/auth.routes.js +158 -0
- package/dist/routes/categories.routes.d.ts +800 -0
- package/dist/routes/categories.routes.d.ts.map +1 -0
- package/dist/routes/categories.routes.js +120 -0
- package/dist/routes/documents.routes.d.ts +2476 -0
- package/dist/routes/documents.routes.d.ts.map +1 -0
- package/dist/routes/documents.routes.js +100 -0
- package/dist/routes/equipment.routes.d.ts +3617 -0
- package/dist/routes/equipment.routes.d.ts.map +1 -0
- package/dist/routes/equipment.routes.js +118 -0
- package/dist/routes/farms.routes.d.ts +2202 -0
- package/dist/routes/farms.routes.d.ts.map +1 -0
- package/dist/routes/farms.routes.js +111 -0
- package/dist/routes/fields.routes.d.ts +3479 -0
- package/dist/routes/fields.routes.d.ts.map +1 -0
- package/dist/routes/fields.routes.js +96 -0
- package/dist/routes/finance.routes.d.ts +6855 -0
- package/dist/routes/finance.routes.d.ts.map +1 -0
- package/dist/routes/finance.routes.js +259 -0
- package/dist/routes/harvest.routes.d.ts +2337 -0
- package/dist/routes/harvest.routes.d.ts.map +1 -0
- package/dist/routes/harvest.routes.js +99 -0
- package/dist/routes/index.d.ts +71 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +45 -0
- package/dist/routes/inventory.routes.d.ts +2853 -0
- package/dist/routes/inventory.routes.d.ts.map +1 -0
- package/dist/routes/inventory.routes.js +121 -0
- package/dist/routes/soil-tests.routes.d.ts +3005 -0
- package/dist/routes/soil-tests.routes.d.ts.map +1 -0
- package/dist/routes/soil-tests.routes.js +98 -0
- package/dist/routes/suppliers.routes.d.ts +4190 -0
- package/dist/routes/suppliers.routes.d.ts.map +1 -0
- package/dist/routes/suppliers.routes.js +146 -0
- package/dist/routes/tasks.routes.d.ts +4248 -0
- package/dist/routes/tasks.routes.d.ts.map +1 -0
- package/dist/routes/tasks.routes.js +138 -0
- package/dist/routes/team.routes.d.ts +2210 -0
- package/dist/routes/team.routes.d.ts.map +1 -0
- package/dist/routes/team.routes.js +98 -0
- package/dist/routes/users.routes.d.ts +721 -0
- package/dist/routes/users.routes.d.ts.map +1 -0
- package/dist/routes/users.routes.js +35 -0
- package/dist/routes/weather.routes.d.ts +500 -0
- package/dist/routes/weather.routes.d.ts.map +1 -0
- package/dist/routes/weather.routes.js +23 -0
- package/dist/schemas/analytics.schemas.d.ts +1344 -0
- package/dist/schemas/analytics.schemas.d.ts.map +1 -0
- package/dist/schemas/analytics.schemas.js +73 -0
- package/dist/schemas/auth.schemas.d.ts +1093 -0
- package/dist/schemas/auth.schemas.d.ts.map +1 -0
- package/dist/schemas/auth.schemas.js +159 -0
- package/dist/schemas/categories.schemas.d.ts +471 -0
- package/dist/schemas/categories.schemas.d.ts.map +1 -0
- package/dist/schemas/categories.schemas.js +51 -0
- package/dist/schemas/common.schemas.d.ts +562 -0
- package/dist/schemas/common.schemas.d.ts.map +1 -0
- package/dist/schemas/common.schemas.js +122 -0
- package/dist/schemas/documents.schemas.d.ts +850 -0
- package/dist/schemas/documents.schemas.d.ts.map +1 -0
- package/dist/schemas/documents.schemas.js +75 -0
- package/dist/schemas/equipment.schemas.d.ts +1618 -0
- package/dist/schemas/equipment.schemas.d.ts.map +1 -0
- package/dist/schemas/equipment.schemas.js +125 -0
- package/dist/schemas/farms.schemas.d.ts +1171 -0
- package/dist/schemas/farms.schemas.d.ts.map +1 -0
- package/dist/schemas/farms.schemas.js +62 -0
- package/dist/schemas/fields.schemas.d.ts +2508 -0
- package/dist/schemas/fields.schemas.d.ts.map +1 -0
- package/dist/schemas/fields.schemas.js +125 -0
- package/dist/schemas/finance.schemas.d.ts +2869 -0
- package/dist/schemas/finance.schemas.d.ts.map +1 -0
- package/dist/schemas/finance.schemas.js +196 -0
- package/dist/schemas/harvest.schemas.d.ts +1051 -0
- package/dist/schemas/harvest.schemas.d.ts.map +1 -0
- package/dist/schemas/harvest.schemas.js +71 -0
- package/dist/schemas/inventory.schemas.d.ts +1138 -0
- package/dist/schemas/inventory.schemas.d.ts.map +1 -0
- package/dist/schemas/inventory.schemas.js +89 -0
- package/dist/schemas/soil-tests.schemas.d.ts +1885 -0
- package/dist/schemas/soil-tests.schemas.d.ts.map +1 -0
- package/dist/schemas/soil-tests.schemas.js +102 -0
- package/dist/schemas/suppliers.schemas.d.ts +1774 -0
- package/dist/schemas/suppliers.schemas.d.ts.map +1 -0
- package/dist/schemas/suppliers.schemas.js +121 -0
- package/dist/schemas/tasks.schemas.d.ts +1811 -0
- package/dist/schemas/tasks.schemas.d.ts.map +1 -0
- package/dist/schemas/tasks.schemas.js +124 -0
- package/dist/schemas/team.schemas.d.ts +583 -0
- package/dist/schemas/team.schemas.d.ts.map +1 -0
- package/dist/schemas/team.schemas.js +60 -0
- package/dist/schemas/users.schemas.d.ts +288 -0
- package/dist/schemas/users.schemas.d.ts.map +1 -0
- package/dist/schemas/users.schemas.js +32 -0
- package/dist/schemas/weather.schemas.d.ts +682 -0
- package/dist/schemas/weather.schemas.d.ts.map +1 -0
- package/dist/schemas/weather.schemas.js +49 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finance.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/finance.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.financeSummaryResponseSchema = exports.financeSummaryResourceSchema = exports.revenueListResponseSchema = exports.revenueDetailResponseSchema = exports.revenueResponseSchema = exports.expenseListResponseSchema = exports.expenseDetailResponseSchema = exports.expenseResponseSchema = exports.budgetListResponseSchema = exports.budgetResponseSchema = exports.revenueDetailResourceSchema = exports.expenseDetailResourceSchema = exports.revenueResourceSchema = exports.expenseResourceSchema = exports.budgetResourceSchema = exports.updateRevenueSchema = exports.createRevenueSchema = exports.updateExpenseSchema = exports.createExpenseSchema = exports.updateBudgetSchema = exports.createBudgetSchema = exports.updateRevenueAttributesSchema = exports.createRevenueAttributesSchema = exports.revenueAttributesSchema = exports.updateExpenseAttributesSchema = exports.createExpenseAttributesSchema = exports.expenseAttributesSchema = exports.updateBudgetAttributesSchema = exports.createBudgetAttributesSchema = exports.budgetAttributesSchema = exports.expenseAllocationTypeSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const common_schemas_1 = require("./common.schemas");
|
|
6
|
+
/**
|
|
7
|
+
* Finance schemas - JSON:API compliant
|
|
8
|
+
*/
|
|
9
|
+
// Expense allocation type
|
|
10
|
+
exports.expenseAllocationTypeSchema = zod_1.z.enum(['field', 'crop', 'general']);
|
|
11
|
+
// Budget attributes schema (for JSON:API attributes object)
|
|
12
|
+
exports.budgetAttributesSchema = zod_1.z.object({
|
|
13
|
+
category: zod_1.z.string(),
|
|
14
|
+
planned: zod_1.z.number().nonnegative(),
|
|
15
|
+
actual: zod_1.z.number().nonnegative().optional(), // Calculated from expenses
|
|
16
|
+
remaining: zod_1.z.number().optional(), // planned - actual
|
|
17
|
+
}).merge(common_schemas_1.timestampsSchema);
|
|
18
|
+
// Budget attributes for creation (input)
|
|
19
|
+
exports.createBudgetAttributesSchema = zod_1.z.object({
|
|
20
|
+
category: zod_1.z.string().min(1).max(100),
|
|
21
|
+
planned: zod_1.z.number().nonnegative(),
|
|
22
|
+
});
|
|
23
|
+
// Budget attributes for update (input)
|
|
24
|
+
exports.updateBudgetAttributesSchema = zod_1.z.object({
|
|
25
|
+
category: zod_1.z.string().min(1).max(100).optional(),
|
|
26
|
+
planned: zod_1.z.number().nonnegative().optional(),
|
|
27
|
+
});
|
|
28
|
+
// Expense attributes schema (for JSON:API attributes object)
|
|
29
|
+
exports.expenseAttributesSchema = zod_1.z.object({
|
|
30
|
+
date: zod_1.z.string().datetime(),
|
|
31
|
+
category: zod_1.z.string(),
|
|
32
|
+
description: zod_1.z.string(),
|
|
33
|
+
amount: zod_1.z.number().positive(),
|
|
34
|
+
allocationType: exports.expenseAllocationTypeSchema,
|
|
35
|
+
fieldId: zod_1.z.string().uuid().nullable(),
|
|
36
|
+
fieldName: zod_1.z.string().nullable().optional(),
|
|
37
|
+
cropId: zod_1.z.string().nullable(),
|
|
38
|
+
cropName: zod_1.z.string().nullable().optional(),
|
|
39
|
+
}).merge(common_schemas_1.timestampsSchema);
|
|
40
|
+
// Expense attributes for creation (input)
|
|
41
|
+
exports.createExpenseAttributesSchema = zod_1.z.object({
|
|
42
|
+
date: zod_1.z.string().datetime(),
|
|
43
|
+
category: zod_1.z.string().min(1),
|
|
44
|
+
description: zod_1.z.string().min(1).max(500),
|
|
45
|
+
amount: zod_1.z.number().positive(),
|
|
46
|
+
// Cost allocation
|
|
47
|
+
allocationType: exports.expenseAllocationTypeSchema.default('general'),
|
|
48
|
+
fieldId: zod_1.z.string().uuid().optional(),
|
|
49
|
+
cropId: zod_1.z.string().optional(),
|
|
50
|
+
}).refine((data) => {
|
|
51
|
+
// If allocationType is 'field', fieldId must be provided
|
|
52
|
+
if (data.allocationType === 'field' && !data.fieldId) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
// If allocationType is 'crop', cropId must be provided
|
|
56
|
+
if (data.allocationType === 'crop' && !data.cropId) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
}, {
|
|
61
|
+
message: 'Field or crop must be selected for field/crop allocation',
|
|
62
|
+
});
|
|
63
|
+
// Expense attributes for update (input)
|
|
64
|
+
exports.updateExpenseAttributesSchema = zod_1.z.object({
|
|
65
|
+
date: zod_1.z.string().datetime().optional(),
|
|
66
|
+
category: zod_1.z.string().min(1).optional(),
|
|
67
|
+
description: zod_1.z.string().min(1).max(500).optional(),
|
|
68
|
+
amount: zod_1.z.number().positive().optional(),
|
|
69
|
+
allocationType: exports.expenseAllocationTypeSchema.optional(),
|
|
70
|
+
fieldId: zod_1.z.string().uuid().nullable().optional(),
|
|
71
|
+
cropId: zod_1.z.string().nullable().optional(),
|
|
72
|
+
});
|
|
73
|
+
// Revenue attributes schema (for JSON:API attributes object)
|
|
74
|
+
exports.revenueAttributesSchema = zod_1.z.object({
|
|
75
|
+
date: zod_1.z.string().datetime(),
|
|
76
|
+
crop: zod_1.z.string(),
|
|
77
|
+
quantity: zod_1.z.number().positive(),
|
|
78
|
+
unit: zod_1.z.string(),
|
|
79
|
+
pricePerUnit: zod_1.z.number().positive(),
|
|
80
|
+
totalAmount: zod_1.z.number().positive(),
|
|
81
|
+
buyer: zod_1.z.string().nullable(),
|
|
82
|
+
fieldId: zod_1.z.string().uuid().nullable(),
|
|
83
|
+
fieldName: zod_1.z.string().nullable().optional(),
|
|
84
|
+
harvestId: zod_1.z.string().uuid().nullable(),
|
|
85
|
+
}).merge(common_schemas_1.timestampsSchema);
|
|
86
|
+
// Revenue attributes for creation (input)
|
|
87
|
+
exports.createRevenueAttributesSchema = zod_1.z.object({
|
|
88
|
+
date: zod_1.z.string().datetime(),
|
|
89
|
+
crop: zod_1.z.string().min(1),
|
|
90
|
+
quantity: zod_1.z.number().positive(),
|
|
91
|
+
unit: zod_1.z.string().min(1), // e.g., "tons", "100kg", "bags"
|
|
92
|
+
pricePerUnit: zod_1.z.number().positive(),
|
|
93
|
+
totalAmount: zod_1.z.number().positive().optional(), // Calculated: quantity * pricePerUnit
|
|
94
|
+
buyer: zod_1.z.string().optional(),
|
|
95
|
+
fieldId: zod_1.z.string().uuid().optional(),
|
|
96
|
+
harvestId: zod_1.z.string().uuid().optional(), // Link to harvest entry
|
|
97
|
+
});
|
|
98
|
+
// Revenue attributes for update (input)
|
|
99
|
+
exports.updateRevenueAttributesSchema = zod_1.z.object({
|
|
100
|
+
date: zod_1.z.string().datetime().optional(),
|
|
101
|
+
crop: zod_1.z.string().min(1).optional(),
|
|
102
|
+
quantity: zod_1.z.number().positive().optional(),
|
|
103
|
+
unit: zod_1.z.string().min(1).optional(),
|
|
104
|
+
pricePerUnit: zod_1.z.number().positive().optional(),
|
|
105
|
+
totalAmount: zod_1.z.number().positive().optional(),
|
|
106
|
+
buyer: zod_1.z.string().nullable().optional(),
|
|
107
|
+
fieldId: zod_1.z.string().uuid().nullable().optional(),
|
|
108
|
+
harvestId: zod_1.z.string().uuid().nullable().optional(),
|
|
109
|
+
});
|
|
110
|
+
// Create input schemas (JSON:API format)
|
|
111
|
+
exports.createBudgetSchema = zod_1.z.object({
|
|
112
|
+
type: zod_1.z.literal('budgets'),
|
|
113
|
+
attributes: exports.createBudgetAttributesSchema,
|
|
114
|
+
});
|
|
115
|
+
exports.updateBudgetSchema = zod_1.z.object({
|
|
116
|
+
type: zod_1.z.literal('budgets'),
|
|
117
|
+
id: zod_1.z.string().uuid(),
|
|
118
|
+
attributes: exports.updateBudgetAttributesSchema,
|
|
119
|
+
});
|
|
120
|
+
exports.createExpenseSchema = zod_1.z.object({
|
|
121
|
+
type: zod_1.z.literal('expenses'),
|
|
122
|
+
attributes: exports.createExpenseAttributesSchema,
|
|
123
|
+
});
|
|
124
|
+
exports.updateExpenseSchema = zod_1.z.object({
|
|
125
|
+
type: zod_1.z.literal('expenses'),
|
|
126
|
+
id: zod_1.z.string().uuid(),
|
|
127
|
+
attributes: exports.updateExpenseAttributesSchema,
|
|
128
|
+
});
|
|
129
|
+
exports.createRevenueSchema = zod_1.z.object({
|
|
130
|
+
type: zod_1.z.literal('revenues'),
|
|
131
|
+
attributes: exports.createRevenueAttributesSchema,
|
|
132
|
+
});
|
|
133
|
+
exports.updateRevenueSchema = zod_1.z.object({
|
|
134
|
+
type: zod_1.z.literal('revenues'),
|
|
135
|
+
id: zod_1.z.string().uuid(),
|
|
136
|
+
attributes: exports.updateRevenueAttributesSchema,
|
|
137
|
+
});
|
|
138
|
+
// Resource schemas (JSON:API resource objects)
|
|
139
|
+
exports.budgetResourceSchema = (0, common_schemas_1.createJsonApiResourceSchema)('budgets', exports.budgetAttributesSchema);
|
|
140
|
+
exports.expenseResourceSchema = (0, common_schemas_1.createJsonApiResourceSchema)('expenses', exports.expenseAttributesSchema);
|
|
141
|
+
exports.revenueResourceSchema = (0, common_schemas_1.createJsonApiResourceSchema)('revenues', exports.revenueAttributesSchema);
|
|
142
|
+
// Detail resource schemas with relationships
|
|
143
|
+
exports.expenseDetailResourceSchema = exports.expenseResourceSchema.extend({
|
|
144
|
+
relationships: zod_1.z.object({
|
|
145
|
+
field: zod_1.z.object({
|
|
146
|
+
links: zod_1.z.object({
|
|
147
|
+
related: zod_1.z.string(),
|
|
148
|
+
}),
|
|
149
|
+
}).optional(),
|
|
150
|
+
}).optional(),
|
|
151
|
+
});
|
|
152
|
+
exports.revenueDetailResourceSchema = exports.revenueResourceSchema.extend({
|
|
153
|
+
relationships: zod_1.z.object({
|
|
154
|
+
field: zod_1.z.object({
|
|
155
|
+
links: zod_1.z.object({
|
|
156
|
+
related: zod_1.z.string(),
|
|
157
|
+
}),
|
|
158
|
+
}).optional(),
|
|
159
|
+
harvest: zod_1.z.object({
|
|
160
|
+
links: zod_1.z.object({
|
|
161
|
+
related: zod_1.z.string(),
|
|
162
|
+
}),
|
|
163
|
+
}).optional(),
|
|
164
|
+
}).optional(),
|
|
165
|
+
});
|
|
166
|
+
// Response schemas (JSON:API format)
|
|
167
|
+
exports.budgetResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.budgetResourceSchema);
|
|
168
|
+
exports.budgetListResponseSchema = (0, common_schemas_1.jsonApiCollectionResponseSchema)(exports.budgetResourceSchema);
|
|
169
|
+
exports.expenseResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.expenseResourceSchema);
|
|
170
|
+
exports.expenseDetailResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.expenseDetailResourceSchema);
|
|
171
|
+
exports.expenseListResponseSchema = (0, common_schemas_1.jsonApiCollectionResponseSchema)(exports.expenseResourceSchema);
|
|
172
|
+
exports.revenueResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.revenueResourceSchema);
|
|
173
|
+
exports.revenueDetailResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.revenueDetailResourceSchema);
|
|
174
|
+
exports.revenueListResponseSchema = (0, common_schemas_1.jsonApiCollectionResponseSchema)(exports.revenueResourceSchema);
|
|
175
|
+
// Finance summary response (JSON:API format)
|
|
176
|
+
exports.financeSummaryResourceSchema = (0, common_schemas_1.createJsonApiResourceSchema)('finance-summaries', zod_1.z.object({
|
|
177
|
+
totalPlanned: zod_1.z.number().nonnegative(),
|
|
178
|
+
totalActual: zod_1.z.number().nonnegative(),
|
|
179
|
+
totalRevenue: zod_1.z.number().nonnegative(),
|
|
180
|
+
remainingBudget: zod_1.z.number(),
|
|
181
|
+
netProfit: zod_1.z.number(),
|
|
182
|
+
profitMargin: zod_1.z.number(), // Percentage
|
|
183
|
+
}));
|
|
184
|
+
exports.financeSummaryResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.financeSummaryResourceSchema.extend({
|
|
185
|
+
relationships: zod_1.z.object({
|
|
186
|
+
budgets: zod_1.z.object({
|
|
187
|
+
data: zod_1.z.array(zod_1.z.object({
|
|
188
|
+
type: zod_1.z.literal('budgets'),
|
|
189
|
+
id: zod_1.z.string(),
|
|
190
|
+
})),
|
|
191
|
+
links: zod_1.z.object({
|
|
192
|
+
related: zod_1.z.string(),
|
|
193
|
+
}),
|
|
194
|
+
}),
|
|
195
|
+
}).optional(),
|
|
196
|
+
}));
|