@quantyapp/quanty-mcp-server 1.0.11 → 1.2.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.
Binary file
@@ -32,4 +32,31 @@ export declare function suggestMissingItems(auth: AuthContext, budgetId: string)
32
32
  * Calculates average cost per unit (e.g., R$/m³ de concreto)
33
33
  */
34
34
  export declare function calculateCostPerUnit(auth: AuthContext, category: string, driver: string): Promise<CostMetric>;
35
+ export interface AbcItem {
36
+ id: string;
37
+ description: string;
38
+ unit: string;
39
+ quantity: number;
40
+ unitCost: number;
41
+ total: number;
42
+ percentage: number;
43
+ accumulated: number;
44
+ class: 'A' | 'B' | 'C';
45
+ }
46
+ export interface AbcCurveResult {
47
+ totalValue: number;
48
+ classAThreshold: number;
49
+ classBThreshold: number;
50
+ classACount: number;
51
+ classBCount: number;
52
+ classCCount: number;
53
+ items: AbcItem[];
54
+ }
55
+ /**
56
+ * Generates ABC Curve analysis for a budget
57
+ * Class A: items representing ~80% of total value (high impact)
58
+ * Class B: items representing next ~15% of value (medium impact)
59
+ * Class C: remaining items representing ~5% of value (low impact)
60
+ */
61
+ export declare function generateAbcCurve(auth: AuthContext, budgetId: string, classAThreshold?: number, classBThreshold?: number): Promise<AbcCurveResult>;
35
62
  //# sourceMappingURL=analysisService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysisService.d.ts","sourceRoot":"","sources":["../../src/core/analysisService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA+CtG;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA0DvG;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAmDrB"}
1
+ {"version":3,"file":"analysisService.d.ts","sourceRoot":"","sources":["../../src/core/analysisService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA+CtG;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA0DvG;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAmDrB;AAID,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAClC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,EAChB,eAAe,GAAE,MAAW,EAC5B,eAAe,GAAE,MAAW,GAC7B,OAAO,CAAC,cAAc,CAAC,CAwFzB"}
@@ -149,3 +149,87 @@ export async function calculateCostPerUnit(auth, category, driver) {
149
149
  p90Cost: Math.round(ratios[p90Index] * 100) / 100
150
150
  };
151
151
  }
152
+ /**
153
+ * Generates ABC Curve analysis for a budget
154
+ * Class A: items representing ~80% of total value (high impact)
155
+ * Class B: items representing next ~15% of value (medium impact)
156
+ * Class C: remaining items representing ~5% of value (low impact)
157
+ */
158
+ export async function generateAbcCurve(auth, budgetId, classAThreshold = 80, classBThreshold = 95) {
159
+ const { data, error } = await supabase
160
+ .from('budgets')
161
+ .select('data')
162
+ .eq('id', budgetId)
163
+ .single();
164
+ if (error)
165
+ throw new Error(`Failed to get budget: ${error.message}`);
166
+ const rows = data?.data?.rows || [];
167
+ // Filter only rows with actual values (non-empty rows)
168
+ const validRows = rows.filter(r => r.description && r.description.trim() !== '' &&
169
+ r.quantity > 0 && r.unitCost > 0);
170
+ // Calculate totals
171
+ const itemsWithTotal = validRows.map(r => ({
172
+ id: r.id,
173
+ description: r.description,
174
+ unit: r.unit,
175
+ quantity: r.quantity,
176
+ unitCost: r.unitCost,
177
+ total: r.quantity * r.unitCost
178
+ }));
179
+ // Sort by total value descending
180
+ itemsWithTotal.sort((a, b) => b.total - a.total);
181
+ const totalValue = itemsWithTotal.reduce((sum, item) => sum + item.total, 0);
182
+ if (totalValue === 0) {
183
+ return {
184
+ totalValue: 0,
185
+ classAThreshold,
186
+ classBThreshold,
187
+ classACount: 0,
188
+ classBCount: 0,
189
+ classCCount: 0,
190
+ items: []
191
+ };
192
+ }
193
+ // Calculate percentages and classifications
194
+ let accumulated = 0;
195
+ let classACount = 0;
196
+ let classBCount = 0;
197
+ let classCCount = 0;
198
+ const items = itemsWithTotal.map(item => {
199
+ const percentage = (item.total / totalValue) * 100;
200
+ accumulated += percentage;
201
+ let itemClass;
202
+ if (accumulated <= classAThreshold) {
203
+ itemClass = 'A';
204
+ classACount++;
205
+ }
206
+ else if (accumulated <= classBThreshold) {
207
+ itemClass = 'B';
208
+ classBCount++;
209
+ }
210
+ else {
211
+ itemClass = 'C';
212
+ classCCount++;
213
+ }
214
+ return {
215
+ id: item.id,
216
+ description: item.description,
217
+ unit: item.unit,
218
+ quantity: item.quantity,
219
+ unitCost: item.unitCost,
220
+ total: Math.round(item.total * 100) / 100,
221
+ percentage: Math.round(percentage * 100) / 100,
222
+ accumulated: Math.round(accumulated * 100) / 100,
223
+ class: itemClass
224
+ };
225
+ });
226
+ return {
227
+ totalValue: Math.round(totalValue * 100) / 100,
228
+ classAThreshold,
229
+ classBThreshold,
230
+ classACount,
231
+ classBCount,
232
+ classCCount,
233
+ items
234
+ };
235
+ }
@@ -49,7 +49,7 @@ export declare function searchBankItems(bankId: string, query: string, limit?: n
49
49
  /**
50
50
  * Prepares importing an item from bank to budget
51
51
  */
52
- export declare function prepareImportItem(budgetId: string, bankItem: BankItem, quantity: number): {
52
+ export declare function prepareImportItem(budgetId: string, bankItem: BankItem, quantity: number, level?: number): {
53
53
  action: string;
54
54
  preview: string;
55
55
  data: any;
@@ -62,4 +62,29 @@ export declare function getBankItemById(bankId: string, itemId: string): Promise
62
62
  * NOVA FUNÇÃO: Lista todos os itens de uma categoria específica
63
63
  */
64
64
  export declare function getCategoryItems(bankId: string, categoryId: string): Promise<BankItem[]>;
65
+ /**
66
+ * Creates a private bank for the user
67
+ */
68
+ export declare function createPrivateBank(auth: AuthContext, name: string, description?: string): Promise<string>;
69
+ /**
70
+ * Edits a bank's metadata (title, description, image)
71
+ */
72
+ export declare function editBank(auth: AuthContext, bankId: string, updates: {
73
+ title?: string;
74
+ description?: string;
75
+ background_image?: string;
76
+ versionDate?: string;
77
+ }): Promise<void>;
78
+ /**
79
+ * Adds an item to a private bank
80
+ */
81
+ export declare function addItemToBank(auth: AuthContext, bankId: string, categoryId: string, item: {
82
+ code: string;
83
+ description: string;
84
+ unit: string;
85
+ unitCost: number;
86
+ itemType?: string;
87
+ isComposition?: boolean;
88
+ composition?: any[];
89
+ }): Promise<string>;
65
90
  //# sourceMappingURL=bankService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bankService.d.ts","sourceRoot":"","sources":["../../src/core/bankService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,cAAc,CAAC;IAClD,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACrB;AA+CD;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAkBzE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgB/E;AAgBD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAwF5G;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACjB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,CA+BhD;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA+C9F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAyC9F"}
1
+ {"version":3,"file":"bankService.d.ts","sourceRoot":"","sources":["../../src/core/bankService.ts"],"names":[],"mappings":"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"}
@@ -184,7 +184,7 @@ export async function searchBankItems(bankId, query, limit = 50) {
184
184
  /**
185
185
  * Prepares importing an item from bank to budget
186
186
  */
187
- export function prepareImportItem(budgetId, bankItem, quantity) {
187
+ export function prepareImportItem(budgetId, bankItem, quantity, level) {
188
188
  let compositionForBudget = undefined;
189
189
  if (bankItem.isComposition && bankItem.composition && bankItem.composition.length > 0) {
190
190
  compositionForBudget = bankItem.composition.map(input => ({
@@ -209,7 +209,8 @@ export function prepareImportItem(budgetId, bankItem, quantity) {
209
209
  quantity: quantity,
210
210
  unitCost: bankItem.unitCost,
211
211
  isComposition: bankItem.isComposition,
212
- composition: compositionForBudget
212
+ composition: compositionForBudget,
213
+ level: level ?? 0
213
214
  }
214
215
  }
215
216
  };
@@ -303,3 +304,111 @@ export async function getCategoryItems(bankId, categoryId) {
303
304
  }
304
305
  return items;
305
306
  }
307
+ // ================ BANK MANAGEMENT ================
308
+ /**
309
+ * Creates a private bank for the user
310
+ */
311
+ export async function createPrivateBank(auth, name, description) {
312
+ const now = new Date().toISOString();
313
+ const bankData = {
314
+ title: name,
315
+ description: description || '',
316
+ author: auth.userName,
317
+ visibility: 'private',
318
+ tenant_id: auth.tenantId,
319
+ user_id: auth.userId,
320
+ created_at: now,
321
+ updated_at: now,
322
+ data: {
323
+ categories: []
324
+ }
325
+ };
326
+ const { data, error } = await supabase
327
+ .from('composition_banks')
328
+ .insert(bankData)
329
+ .select('id')
330
+ .single();
331
+ if (error)
332
+ throw new Error(`Failed to create bank: ${error.message}`);
333
+ return data.id;
334
+ }
335
+ /**
336
+ * Edits a bank's metadata (title, description, image)
337
+ */
338
+ export async function editBank(auth, bankId, updates) {
339
+ const updatePayload = {
340
+ updated_at: new Date().toISOString()
341
+ };
342
+ if (updates.title !== undefined)
343
+ updatePayload.title = updates.title;
344
+ if (updates.description !== undefined)
345
+ updatePayload.description = updates.description;
346
+ if (updates.background_image !== undefined)
347
+ updatePayload.background_image = updates.background_image;
348
+ if (updates.versionDate !== undefined)
349
+ updatePayload.version_date = updates.versionDate;
350
+ const { error } = await supabase
351
+ .from('composition_banks')
352
+ .update(updatePayload)
353
+ .eq('id', bankId)
354
+ .or(`tenant_id.eq.${auth.tenantId},user_id.eq.${auth.userId}`);
355
+ if (error)
356
+ throw new Error(`Failed to edit bank: ${error.message}`);
357
+ }
358
+ /**
359
+ * Adds an item to a private bank
360
+ */
361
+ export async function addItemToBank(auth, bankId, categoryId, item) {
362
+ // Get current bank data
363
+ const { data: bank, error: fetchError } = await supabase
364
+ .from('composition_banks')
365
+ .select('data')
366
+ .eq('id', bankId)
367
+ .or(`tenant_id.eq.${auth.tenantId},user_id.eq.${auth.userId}`)
368
+ .single();
369
+ if (fetchError || !bank)
370
+ throw new Error('Bank not found or not accessible');
371
+ const categories = bank.data?.categories || [];
372
+ // Find category and add item
373
+ let found = false;
374
+ const findAndAddToCategory = (nodes) => {
375
+ for (const node of nodes) {
376
+ if (node.id === categoryId) {
377
+ if (!node.items)
378
+ node.items = [];
379
+ node.items.push({
380
+ id: crypto.randomUUID(),
381
+ ...item
382
+ });
383
+ found = true;
384
+ return true;
385
+ }
386
+ if (node.children && findAndAddToCategory(node.children)) {
387
+ return true;
388
+ }
389
+ }
390
+ return false;
391
+ };
392
+ findAndAddToCategory(categories);
393
+ if (!found) {
394
+ // Create a new category if not found
395
+ categories.push({
396
+ id: categoryId,
397
+ name: 'Itens Personalizados',
398
+ items: [{
399
+ id: crypto.randomUUID(),
400
+ ...item
401
+ }]
402
+ });
403
+ }
404
+ const { error } = await supabase
405
+ .from('composition_banks')
406
+ .update({
407
+ data: { categories },
408
+ updated_at: new Date().toISOString()
409
+ })
410
+ .eq('id', bankId);
411
+ if (error)
412
+ throw new Error(`Failed to add item to bank: ${error.message}`);
413
+ return 'Item added successfully';
414
+ }
@@ -14,6 +14,7 @@ export interface BudgetRow {
14
14
  export interface Budget {
15
15
  id: string;
16
16
  title: string;
17
+ baseDate?: string;
17
18
  createdAt: string;
18
19
  lastModified: string;
19
20
  creator: string;
@@ -61,6 +62,33 @@ export declare function prepareAddItem(budgetId: string, item: {
61
62
  unit: string;
62
63
  quantity: number;
63
64
  unitCost: number;
65
+ level?: number;
66
+ }): {
67
+ action: string;
68
+ preview: string;
69
+ data: any;
70
+ };
71
+ /**
72
+ * Interface para insumos de uma composição
73
+ */
74
+ export interface CompositionInput {
75
+ code?: string;
76
+ description: string;
77
+ unit: string;
78
+ quantity: number;
79
+ unitCost: number;
80
+ itemType?: string;
81
+ }
82
+ /**
83
+ * Prepares adding a COMPOSITION (with inputs) to a budget
84
+ */
85
+ export declare function prepareAddComposition(budgetId: string, composition: {
86
+ code?: string;
87
+ description: string;
88
+ unit: string;
89
+ quantity: number;
90
+ level?: number;
91
+ insumos: CompositionInput[];
64
92
  }): {
65
93
  action: string;
66
94
  preview: string;
@@ -88,4 +116,166 @@ export declare function executeDeleteItem(auth: AuthContext, data: any): Promise
88
116
  * Gets composition details (inputs/children) for a specific item in a budget
89
117
  */
90
118
  export declare function getCompositionDetails(auth: AuthContext, budgetId: string, itemId: string): Promise<any[]>;
119
+ /**
120
+ * Prepares updating BDI values for a budget
121
+ */
122
+ export declare function prepareUpdateBdi(budgetId: string, bdiPrincipal?: number, bdiDiferenciado?: number): {
123
+ action: string;
124
+ preview: string;
125
+ data: any;
126
+ };
127
+ /**
128
+ * Executes BDI update
129
+ */
130
+ export declare function executeUpdateBdi(auth: AuthContext, data: any): Promise<void>;
131
+ /**
132
+ * Prepares editing an existing item
133
+ */
134
+ export declare function prepareEditItem(budgetId: string, itemId: string, updates: {
135
+ description?: string;
136
+ unit?: string;
137
+ quantity?: number;
138
+ unitCost?: number;
139
+ level?: number;
140
+ code?: string;
141
+ }): {
142
+ action: string;
143
+ preview: string;
144
+ data: any;
145
+ };
146
+ /**
147
+ * Executes item edit
148
+ */
149
+ export declare function executeEditItem(auth: AuthContext, data: any): Promise<void>;
150
+ /**
151
+ * Prepares duplicating a budget
152
+ */
153
+ export declare function prepareDuplicateBudget(auth: AuthContext, budgetId: string, newTitle: string): {
154
+ action: string;
155
+ preview: string;
156
+ data: any;
157
+ };
158
+ /**
159
+ * Executes budget duplication
160
+ */
161
+ export declare function executeDuplicateBudget(auth: AuthContext, data: any): Promise<string>;
162
+ /**
163
+ * Prepares moving an item to a different level
164
+ */
165
+ export declare function prepareMoveItem(budgetId: string, itemId: string, newLevel: number, itemDescription: string): {
166
+ action: string;
167
+ preview: string;
168
+ data: any;
169
+ };
170
+ /**
171
+ * Prepares editing budget metadata
172
+ */
173
+ export declare function prepareEditBudget(budgetId: string, updates: {
174
+ title?: string;
175
+ baseDate?: string;
176
+ bdiPrincipal?: number;
177
+ bdiDiferenciado?: number;
178
+ }): {
179
+ action: string;
180
+ preview: string;
181
+ data: any;
182
+ };
183
+ /**
184
+ * Executes budget metadata editing
185
+ */
186
+ export declare function executeEditBudget(auth: AuthContext, data: any): Promise<void>;
187
+ /**
188
+ * Prepares setting BDI type for an item
189
+ */
190
+ export declare function prepareSetBdiType(budgetId: string, itemId: string, bdiType: 'Principal' | 'Diferenciado', itemDescription: string): {
191
+ action: string;
192
+ preview: string;
193
+ data: any;
194
+ };
195
+ /**
196
+ * Prepares ABC classification for an item
197
+ */
198
+ export declare function prepareSetAbcClassification(budgetId: string, itemId: string, classification: 'Custo' | 'Material' | 'Mão de Obra' | 'Equipamento', itemDescription: string): {
199
+ action: string;
200
+ preview: string;
201
+ data: any;
202
+ };
203
+ /**
204
+ * Executes ABC classification setting
205
+ */
206
+ export declare function executeSetAbcClassification(auth: AuthContext, data: any): Promise<void>;
207
+ /**
208
+ * Prepares editing inputs of a composition
209
+ */
210
+ export declare function prepareEditCompositionInput(budgetId: string, compositionId: string, inputId: string, updates: {
211
+ code?: string;
212
+ description?: string;
213
+ unit?: string;
214
+ quantity?: number;
215
+ unitCost?: number;
216
+ itemType?: string;
217
+ }, inputDescription: string): {
218
+ action: string;
219
+ preview: string;
220
+ data: any;
221
+ };
222
+ /**
223
+ * Executes editing composition input
224
+ */
225
+ export declare function executeEditCompositionInput(auth: AuthContext, data: any): Promise<void>;
226
+ /**
227
+ * Prepares adding an input to a composition
228
+ */
229
+ export declare function prepareAddCompositionInput(budgetId: string, compositionId: string, input: {
230
+ code?: string;
231
+ description: string;
232
+ unit: string;
233
+ quantity: number;
234
+ unitCost: number;
235
+ itemType?: string;
236
+ }): {
237
+ action: string;
238
+ preview: string;
239
+ data: any;
240
+ };
241
+ /**
242
+ * Executes adding input to composition
243
+ */
244
+ export declare function executeAddCompositionInput(auth: AuthContext, data: any): Promise<void>;
245
+ /**
246
+ * Prepares removing an input from a composition
247
+ */
248
+ export declare function prepareRemoveCompositionInput(budgetId: string, compositionId: string, inputId: string, inputDescription: string): {
249
+ action: string;
250
+ preview: string;
251
+ data: any;
252
+ };
253
+ /**
254
+ * Executes removing input from composition
255
+ */
256
+ export declare function executeRemoveCompositionInput(auth: AuthContext, data: any): Promise<void>;
257
+ /**
258
+ * Prepares converting a simple cost item to a composition
259
+ */
260
+ export declare function prepareConvertToComposition(budgetId: string, itemId: string, itemDescription: string): {
261
+ action: string;
262
+ preview: string;
263
+ data: any;
264
+ };
265
+ /**
266
+ * Executes converting a cost item to a composition
267
+ */
268
+ export declare function executeConvertToComposition(auth: AuthContext, data: any): Promise<void>;
269
+ /**
270
+ * Prepares converting a composition back to simple cost
271
+ */
272
+ export declare function prepareConvertToCost(budgetId: string, itemId: string, itemDescription: string): {
273
+ action: string;
274
+ preview: string;
275
+ data: any;
276
+ };
277
+ /**
278
+ * Executes converting a composition back to cost
279
+ */
280
+ export declare function executeConvertToCost(auth: AuthContext, data: any): Promise<void>;
91
281
  //# sourceMappingURL=budgetService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"budgetService.d.ts","sourceRoot":"","sources":["../../src/core/budgetService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"budgetService.d.ts","sourceRoot":"","sources":["../../src/core/budgetService.ts"],"names":[],"mappings":"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"}