feat(web+api): ficha do cliente — contatos, CTR, NF-e, pedidos e produtos
- Contatos: grid de cards 3 colunas, botão "Novo Contato" no topo da página - Sync ERP↔SAR corrigido: vw_contatos aceita formato COR#<id>, trigger normaliza id_empresa (9001→1) - CTR + NF-e: layout 50/50 — lista de títulos abertos com badge vencido/a vencer e lista de notas com botão copiar chave NF-e - Histórico de pedidos: UNION SAR+ERP, top 5 + modal "Ver todos" - Produtos mais comprados: top 5 com último preço + modal "Ver todos" - Novos endpoints: ctr-list, notas, orders-history, top-produtos - AppShell: overflow-x travado, sem scroll horizontal na aplicação Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
33
apps/api/src/app/reports/reports.controller.ts
Normal file
33
apps/api/src/app/reports/reports.controller.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { Controller, Get, Query } from '@nestjs/common';
|
||||
import { createZodDto } from 'nestjs-zod';
|
||||
import {
|
||||
ReportMetaQuerySchema,
|
||||
ReportAbcQuerySchema,
|
||||
type ReportMetaResponse,
|
||||
type ReportCarteiraResponse,
|
||||
type ReportAbcResponse,
|
||||
} from '@sar/api-interface';
|
||||
import { ReportsService } from './reports.service';
|
||||
|
||||
class ReportMetaQueryDto extends createZodDto(ReportMetaQuerySchema) {}
|
||||
class ReportAbcQueryDto extends createZodDto(ReportAbcQuerySchema) {}
|
||||
|
||||
@Controller({ path: 'reports' })
|
||||
export class ReportsController {
|
||||
constructor(private readonly reports: ReportsService) {}
|
||||
|
||||
@Get('meta')
|
||||
meta(@Query() query: ReportMetaQueryDto): Promise<ReportMetaResponse> {
|
||||
return this.reports.metaVsRealizado(ReportMetaQuerySchema.parse(query));
|
||||
}
|
||||
|
||||
@Get('carteira')
|
||||
carteira(): Promise<ReportCarteiraResponse> {
|
||||
return this.reports.carteira();
|
||||
}
|
||||
|
||||
@Get('abc')
|
||||
abc(@Query() query: ReportAbcQueryDto): Promise<ReportAbcResponse> {
|
||||
return this.reports.abcProdutos(ReportAbcQuerySchema.parse(query));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user