evo360-types 1.3.734 → 1.3.746
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/apps/evo-finops/nfse-reissue.d.ts +54 -0
- package/dist/apps/evo-finops/nfse-reissue.js +120 -0
- package/dist/apps/evo-finops/nfse-reissue.ts +156 -0
- package/dist/apps/evo-finops/zod-schemas.d.ts +1260 -60
- package/dist/apps/evo-finops/zod-schemas.js +80 -1
- package/dist/apps/evo-finops/zod-schemas.ts +88 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.ts +1 -0
- package/dist/types/evo-finops/invoices/index.d.ts +122 -0
- package/dist/types/evo-finops/invoices/index.ts +142 -0
- package/dist/types/evo-reports/index.d.ts +52 -0
- package/dist/types/evo-reports/index.ts +55 -0
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.zServiceTaxInfoSchema = exports.zServiceLineItemSchema = exports.zServiceInvoiceStateSchema = exports.zProviderServiceInvoiceStatusSchema = exports.zExternalLinkSchema = exports.zExternalObjectTypeSchema = exports.zInvoiceSourceRefSchema = exports.zInvoiceSourceTypeSchema = exports.zInvoiceTakerRefSchema = exports.zInvoiceTakerSnapshotSchema = exports.zInvoiceTakerSnapshotAddressSchema = exports.zTakerDocumentSchema = exports.zTakerTaxProfileSchema = exports.zTakerProviderRefsSchema = exports.zTakerAddressSchema = exports.zInvoiceTakerTypeSchema = exports.zServiceSchema = exports.zCustomerServiceTaxInfoSchema = exports.zIssuerTaxProfileSchema = exports.zIssuerNfseConfigSchema = exports.zIssuerMunicipalCredentialsRefSchema = exports.zIssuerTaxRegimeSchema = exports.zIssuerCompanyIdentitySchema = exports.zIssuerCompanyAddressSchema = exports.zTaxProfileSyncStateSchema = exports.zAsaasProviderSchema = exports.zAsaasProviderAsaasBlockSchema = exports.zAsaasProviderCapabilitiesSchema = exports.zAsaasPaymentsCapabilitiesSchema = exports.zAsaasEnvFlagSchema = exports.zAsaasNfseCapabilitiesSchema = exports.zAsaasEnvAuthConfigSchema = exports.zAsaasSubaccountInputSchema = exports.zAsaasAccountScopeSchema = exports.zAsaasWebhookConfigSchema = exports.zRetryPolicySchema = exports.zAsaasWebhookEventSchema = exports.zAsaasAccountScopeModeSchema = exports.zProviderRemoteRefsSchema = exports.zProviderFiscalInfoPayloadSchema = exports.zProviderCredentialsInputSchema = exports.zProviderCredentialsSecretRefsSchema = exports.zProviderMunicipalOptionsSnapshotSchema = exports.zProviderOptionItemSchema = exports.zProviderMunicipalAuthTypeSchema = exports.zFinopsProviderBaseSchema = exports.zProviderStatusSchema = exports.zFinopsActionSchema = exports.zFinopsProviderTypeSchema = exports.zProviderEnvSchema = void 0;
|
|
4
|
-
exports.
|
|
4
|
+
exports.zNfseFeeReimbursementCompetenciaSchema = exports.zNexFinopsPaymentMethodsDiscoverSchema = exports.zNexFinopsBillingCardChargeSweepSchema = exports.zEvoBillingPortalCardCaptureSchema = exports.zNexFinopsBillingCardChargeSchema = exports.zNexFinopsContractPaymentMethodsWriteSchema = exports.zNexFinopsPaymentMethodPatchSchema = exports.zNexFinopsPaymentMethodStatusSchema = exports.zNexFinopsPaymentMethodKindSchema = exports.zNexFinopsContractAllowancesWriteSchema = exports.zNexFinopsUsageAlertDefaultsSchema = exports.zNexFinopsAlertThresholdSchema = exports.zNexFinopsContractAllowancesSchema = exports.zNexFinopsContractAllowanceSchema = exports.zNexVendasJourneyPaymentSchema = exports.zNexVendasJourneyPaymentSupersededSchema = exports.zNexVendasJourneyPaymentWebhookEventSchema = exports.zNexVendasJourneyBoletoSchema = exports.zNexVendasJourneyPaymentChooseSchema = exports.zNexVendasJourneyPaymentStateSchema = exports.zNexVendasJourneyPaymentKindSchema = exports.zNexVendasJourneyPaymentMethodSchema = exports.zNexFinopsContractAsaasInfoSchema = exports.zNexFinopsAsaasSubscriptionStatusSchema = exports.zNexFinopsPaymentMethodSchema = exports.zNexFinopsProposalSchema = exports.zNexFinopsProposalWriteSchema = exports.zNexFinopsProposalPrefillSchema = exports.zNexFinopsProposalLoyaltyPeriodSchema = exports.zNexFinopsProposalPaymentMethodSchema = exports.zNexFinopsProposalStatusSchema = exports.zServiceInvoiceSchema = exports.zServiceInvoiceReplacedBySchema = exports.zServiceInvoiceReissuedFromSchema = exports.zServiceInvoiceReissueSchema = exports.zNfseReissueStageSchema = exports.zNfseReissueFieldSchema = exports.zNfseReissueStatusSchema = exports.zServiceInvoiceCancellationSchema = exports.zNfseCancellationStatusSchema = exports.zPaymentLinkSchema = exports.zPaymentLinkDocumentStateSchema = exports.zAsaasPaymentLinkSubscriptionCycleSchema = exports.zAsaasPaymentLinkChargeTypeSchema = exports.zAsaasPaymentLinkBillingTypeSchema = exports.zProviderPayloadSnapshotSchema = exports.zProviderTraceSchema = exports.zProviderInvoiceErrorSchema = exports.zProviderInvoiceIdentifiersSchema = exports.zProviderInvoiceLinksSchema = void 0;
|
|
5
|
+
exports.zNfseFeeReimbursementExecuteSchema = void 0;
|
|
5
6
|
const zod_1 = require("zod");
|
|
6
7
|
const zod_schemas_1 = require("../shared/zod-schemas");
|
|
7
8
|
// ---- Provider enums and base ----
|
|
@@ -671,6 +672,75 @@ exports.zServiceInvoiceCancellationSchema = zod_1.z
|
|
|
671
672
|
attempts: zod_1.z.number().int().nonnegative(),
|
|
672
673
|
})
|
|
673
674
|
.passthrough();
|
|
675
|
+
// ---- Reemissão de NFS-e (feat-292) ----
|
|
676
|
+
exports.zNfseReissueStatusSchema = zod_1.z.enum([
|
|
677
|
+
"requesting",
|
|
678
|
+
"requested",
|
|
679
|
+
"failed",
|
|
680
|
+
]);
|
|
681
|
+
exports.zNfseReissueFieldSchema = zod_1.z.enum([
|
|
682
|
+
"value",
|
|
683
|
+
"service_description",
|
|
684
|
+
"observations",
|
|
685
|
+
"deductions",
|
|
686
|
+
"taxes",
|
|
687
|
+
]);
|
|
688
|
+
exports.zNfseReissueStageSchema = zod_1.z.enum(["get", "put", "authorize"]);
|
|
689
|
+
const zNfseReissueActorSchema = zod_1.z
|
|
690
|
+
.object({
|
|
691
|
+
user_id: zod_1.z.string(),
|
|
692
|
+
login_id: zod_1.z.string().optional(),
|
|
693
|
+
name: zod_1.z.string().optional(),
|
|
694
|
+
})
|
|
695
|
+
.passthrough();
|
|
696
|
+
exports.zServiceInvoiceReissueSchema = zod_1.z
|
|
697
|
+
.object({
|
|
698
|
+
status: exports.zNfseReissueStatusSchema,
|
|
699
|
+
attempts: zod_1.z.number().int().nonnegative(),
|
|
700
|
+
last_at: zod_schemas_1.zFirestoreDateSchema,
|
|
701
|
+
last_by: zNfseReissueActorSchema,
|
|
702
|
+
previous_state: exports.zServiceInvoiceStateSchema,
|
|
703
|
+
previous_error: exports.zProviderInvoiceErrorSchema.nullable().optional(),
|
|
704
|
+
changes: zod_1.z.array(zod_1.z
|
|
705
|
+
.object({
|
|
706
|
+
field: exports.zNfseReissueFieldSchema,
|
|
707
|
+
from: zod_1.z.unknown().optional(),
|
|
708
|
+
to: zod_1.z.unknown().optional(),
|
|
709
|
+
})
|
|
710
|
+
.passthrough()),
|
|
711
|
+
stage: exports.zNfseReissueStageSchema.optional(),
|
|
712
|
+
provider_status_at_response: exports.zProviderServiceInvoiceStatusSchema.optional(),
|
|
713
|
+
responded_at: zod_schemas_1.zFirestoreDateSchema.optional(),
|
|
714
|
+
error: zod_1.z
|
|
715
|
+
.object({
|
|
716
|
+
http_status: zod_1.z.number().optional(),
|
|
717
|
+
code: zod_1.z.string().optional(),
|
|
718
|
+
description: zod_1.z.string().optional(),
|
|
719
|
+
})
|
|
720
|
+
.passthrough()
|
|
721
|
+
.optional(),
|
|
722
|
+
})
|
|
723
|
+
.passthrough();
|
|
724
|
+
exports.zServiceInvoiceReissuedFromSchema = zod_1.z
|
|
725
|
+
.object({
|
|
726
|
+
invoiceId: zod_1.z.string(),
|
|
727
|
+
provider_invoice_id: zod_1.z.string().optional(),
|
|
728
|
+
number: zod_1.z.string().optional(),
|
|
729
|
+
state_at_reissue: exports.zServiceInvoiceStateSchema,
|
|
730
|
+
at: zod_schemas_1.zFirestoreDateSchema,
|
|
731
|
+
by: zNfseReissueActorSchema,
|
|
732
|
+
})
|
|
733
|
+
.passthrough();
|
|
734
|
+
exports.zServiceInvoiceReplacedBySchema = zod_1.z
|
|
735
|
+
.object({
|
|
736
|
+
status: zod_1.z.enum(["pending", "done"]),
|
|
737
|
+
invoiceId: zod_1.z.string().optional(),
|
|
738
|
+
provider_invoice_id: zod_1.z.string().optional(),
|
|
739
|
+
requested_at: zod_schemas_1.zFirestoreDateSchema,
|
|
740
|
+
requested_by: zNfseReissueActorSchema,
|
|
741
|
+
done_at: zod_schemas_1.zFirestoreDateSchema.optional(),
|
|
742
|
+
})
|
|
743
|
+
.passthrough();
|
|
674
744
|
exports.zServiceInvoiceSchema = zod_schemas_1.zFireDocSchema
|
|
675
745
|
.extend({
|
|
676
746
|
providerId: zod_1.z.string(),
|
|
@@ -730,6 +800,15 @@ exports.zServiceInvoiceSchema = zod_schemas_1.zFireDocSchema
|
|
|
730
800
|
canceled_at: zod_schemas_1.zFirestoreDateSchema.optional(),
|
|
731
801
|
error: exports.zProviderInvoiceErrorSchema.nullable().optional(),
|
|
732
802
|
cancellation: exports.zServiceInvoiceCancellationSchema.optional(),
|
|
803
|
+
reissue: exports.zServiceInvoiceReissueSchema.optional(),
|
|
804
|
+
reissued_from: exports.zServiceInvoiceReissuedFromSchema.optional(),
|
|
805
|
+
replaced_by: exports.zServiceInvoiceReplacedBySchema.optional(),
|
|
806
|
+
observations: zod_1.z.string().optional(),
|
|
807
|
+
deductions: zod_1.z.number().optional(),
|
|
808
|
+
effective_date: zod_1.z
|
|
809
|
+
.string()
|
|
810
|
+
.regex(/^\d{4}-\d{2}-\d{2}$/)
|
|
811
|
+
.optional(),
|
|
733
812
|
trace: exports.zProviderTraceSchema.optional(),
|
|
734
813
|
snapshots: zod_1.z.array(exports.zProviderPayloadSnapshotSchema).optional(),
|
|
735
814
|
})
|
|
@@ -733,6 +733,85 @@ export const zServiceInvoiceCancellationSchema = z
|
|
|
733
733
|
})
|
|
734
734
|
.passthrough();
|
|
735
735
|
|
|
736
|
+
// ---- Reemissão de NFS-e (feat-292) ----
|
|
737
|
+
|
|
738
|
+
export const zNfseReissueStatusSchema = z.enum([
|
|
739
|
+
"requesting",
|
|
740
|
+
"requested",
|
|
741
|
+
"failed",
|
|
742
|
+
]);
|
|
743
|
+
|
|
744
|
+
export const zNfseReissueFieldSchema = z.enum([
|
|
745
|
+
"value",
|
|
746
|
+
"service_description",
|
|
747
|
+
"observations",
|
|
748
|
+
"deductions",
|
|
749
|
+
"taxes",
|
|
750
|
+
]);
|
|
751
|
+
|
|
752
|
+
export const zNfseReissueStageSchema = z.enum(["get", "put", "authorize"]);
|
|
753
|
+
|
|
754
|
+
const zNfseReissueActorSchema = z
|
|
755
|
+
.object({
|
|
756
|
+
user_id: z.string(),
|
|
757
|
+
login_id: z.string().optional(),
|
|
758
|
+
name: z.string().optional(),
|
|
759
|
+
})
|
|
760
|
+
.passthrough();
|
|
761
|
+
|
|
762
|
+
export const zServiceInvoiceReissueSchema = z
|
|
763
|
+
.object({
|
|
764
|
+
status: zNfseReissueStatusSchema,
|
|
765
|
+
attempts: z.number().int().nonnegative(),
|
|
766
|
+
last_at: zFirestoreDateSchema,
|
|
767
|
+
last_by: zNfseReissueActorSchema,
|
|
768
|
+
previous_state: zServiceInvoiceStateSchema,
|
|
769
|
+
previous_error: zProviderInvoiceErrorSchema.nullable().optional(),
|
|
770
|
+
changes: z.array(
|
|
771
|
+
z
|
|
772
|
+
.object({
|
|
773
|
+
field: zNfseReissueFieldSchema,
|
|
774
|
+
from: z.unknown().optional(),
|
|
775
|
+
to: z.unknown().optional(),
|
|
776
|
+
})
|
|
777
|
+
.passthrough(),
|
|
778
|
+
),
|
|
779
|
+
stage: zNfseReissueStageSchema.optional(),
|
|
780
|
+
provider_status_at_response: zProviderServiceInvoiceStatusSchema.optional(),
|
|
781
|
+
responded_at: zFirestoreDateSchema.optional(),
|
|
782
|
+
error: z
|
|
783
|
+
.object({
|
|
784
|
+
http_status: z.number().optional(),
|
|
785
|
+
code: z.string().optional(),
|
|
786
|
+
description: z.string().optional(),
|
|
787
|
+
})
|
|
788
|
+
.passthrough()
|
|
789
|
+
.optional(),
|
|
790
|
+
})
|
|
791
|
+
.passthrough();
|
|
792
|
+
|
|
793
|
+
export const zServiceInvoiceReissuedFromSchema = z
|
|
794
|
+
.object({
|
|
795
|
+
invoiceId: z.string(),
|
|
796
|
+
provider_invoice_id: z.string().optional(),
|
|
797
|
+
number: z.string().optional(),
|
|
798
|
+
state_at_reissue: zServiceInvoiceStateSchema,
|
|
799
|
+
at: zFirestoreDateSchema,
|
|
800
|
+
by: zNfseReissueActorSchema,
|
|
801
|
+
})
|
|
802
|
+
.passthrough();
|
|
803
|
+
|
|
804
|
+
export const zServiceInvoiceReplacedBySchema = z
|
|
805
|
+
.object({
|
|
806
|
+
status: z.enum(["pending", "done"]),
|
|
807
|
+
invoiceId: z.string().optional(),
|
|
808
|
+
provider_invoice_id: z.string().optional(),
|
|
809
|
+
requested_at: zFirestoreDateSchema,
|
|
810
|
+
requested_by: zNfseReissueActorSchema,
|
|
811
|
+
done_at: zFirestoreDateSchema.optional(),
|
|
812
|
+
})
|
|
813
|
+
.passthrough();
|
|
814
|
+
|
|
736
815
|
export const zServiceInvoiceSchema = zFireDocSchema
|
|
737
816
|
.extend({
|
|
738
817
|
providerId: z.string(),
|
|
@@ -794,6 +873,15 @@ export const zServiceInvoiceSchema = zFireDocSchema
|
|
|
794
873
|
canceled_at: zFirestoreDateSchema.optional(),
|
|
795
874
|
error: zProviderInvoiceErrorSchema.nullable().optional(),
|
|
796
875
|
cancellation: zServiceInvoiceCancellationSchema.optional(),
|
|
876
|
+
reissue: zServiceInvoiceReissueSchema.optional(),
|
|
877
|
+
reissued_from: zServiceInvoiceReissuedFromSchema.optional(),
|
|
878
|
+
replaced_by: zServiceInvoiceReplacedBySchema.optional(),
|
|
879
|
+
observations: z.string().optional(),
|
|
880
|
+
deductions: z.number().optional(),
|
|
881
|
+
effective_date: z
|
|
882
|
+
.string()
|
|
883
|
+
.regex(/^\d{4}-\d{2}-\d{2}$/)
|
|
884
|
+
.optional(),
|
|
797
885
|
trace: zProviderTraceSchema.optional(),
|
|
798
886
|
snapshots: z.array(zProviderPayloadSnapshotSchema).optional(),
|
|
799
887
|
})
|
package/dist/index.d.ts
CHANGED
|
@@ -74,6 +74,7 @@ export * from "./apps/evo-task/zod-schemas";
|
|
|
74
74
|
export * from "./apps/evo-survey/zod-schemas";
|
|
75
75
|
export * from "./apps/evo-finops/zod-schemas";
|
|
76
76
|
export * from "./apps/evo-finops/nfse-cancel";
|
|
77
|
+
export * from "./apps/evo-finops/nfse-reissue";
|
|
77
78
|
export * from "./apps/evo-notif-user/zod-schemas";
|
|
78
79
|
export * from "./apps/evo-notifications/zod-schemas";
|
|
79
80
|
export * from "./apps/evo-notifications/quick-reply-action/zod-schemas";
|
package/dist/index.js
CHANGED
|
@@ -92,6 +92,7 @@ __exportStar(require("./apps/evo-task/zod-schemas"), exports);
|
|
|
92
92
|
__exportStar(require("./apps/evo-survey/zod-schemas"), exports);
|
|
93
93
|
__exportStar(require("./apps/evo-finops/zod-schemas"), exports);
|
|
94
94
|
__exportStar(require("./apps/evo-finops/nfse-cancel"), exports);
|
|
95
|
+
__exportStar(require("./apps/evo-finops/nfse-reissue"), exports);
|
|
95
96
|
__exportStar(require("./apps/evo-notif-user/zod-schemas"), exports);
|
|
96
97
|
__exportStar(require("./apps/evo-notifications/zod-schemas"), exports);
|
|
97
98
|
__exportStar(require("./apps/evo-notifications/quick-reply-action/zod-schemas"), exports);
|
package/dist/index.ts
CHANGED
|
@@ -77,6 +77,7 @@ export * from "./apps/evo-task/zod-schemas";
|
|
|
77
77
|
export * from "./apps/evo-survey/zod-schemas";
|
|
78
78
|
export * from "./apps/evo-finops/zod-schemas";
|
|
79
79
|
export * from "./apps/evo-finops/nfse-cancel";
|
|
80
|
+
export * from "./apps/evo-finops/nfse-reissue";
|
|
80
81
|
export * from "./apps/evo-notif-user/zod-schemas";
|
|
81
82
|
export * from "./apps/evo-notifications/zod-schemas";
|
|
82
83
|
export * from "./apps/evo-notifications/quick-reply-action/zod-schemas";
|
|
@@ -151,6 +151,116 @@ export interface INfseCancelResult {
|
|
|
151
151
|
providerStatus?: ProviderServiceInvoiceStatus;
|
|
152
152
|
message: string;
|
|
153
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Situação da correção no lugar ("Corrigir e reemitir") de uma nota em ERROR.
|
|
156
|
+
* - `requesting`: trava gravada, chamadas ao provedor (GET → PUT → authorize) em andamento.
|
|
157
|
+
* - `requested`: provedor aceitou a correção e a reemissão (o estado final chega pelo webhook).
|
|
158
|
+
* - `failed`: provedor recusou ou a chamada falhou; ver `stage` e `error`.
|
|
159
|
+
*/
|
|
160
|
+
export type NfseReissueStatus = "requesting" | "requested" | "failed";
|
|
161
|
+
/** Campos que a correção no lugar pode alterar (o PUT do Asaas não muda tomador nem serviço municipal). */
|
|
162
|
+
export type NfseReissueField = "value" | "service_description" | "observations" | "deductions" | "taxes";
|
|
163
|
+
/** Etapa da correção no lugar em que a falha ocorreu. */
|
|
164
|
+
export type NfseReissueStage = "get" | "put" | "authorize";
|
|
165
|
+
/**
|
|
166
|
+
* Impostos enviados ao provedor (formato do Asaas). O PUT exige o objeto completo;
|
|
167
|
+
* o backend monta a partir do GET + `tax` local + edição, nunca zerando com defaults.
|
|
168
|
+
*/
|
|
169
|
+
export interface INfseReissueTaxes {
|
|
170
|
+
retainIss?: boolean;
|
|
171
|
+
iss?: number;
|
|
172
|
+
pis?: number;
|
|
173
|
+
cofins?: number;
|
|
174
|
+
csll?: number;
|
|
175
|
+
inss?: number;
|
|
176
|
+
ir?: number;
|
|
177
|
+
}
|
|
178
|
+
/** Uma alteração aplicada na correção (auditoria). */
|
|
179
|
+
export interface INfseReissueChange {
|
|
180
|
+
field: NfseReissueField;
|
|
181
|
+
from?: unknown;
|
|
182
|
+
to?: unknown;
|
|
183
|
+
}
|
|
184
|
+
/** Registro da última correção no lugar ("Corrigir e reemitir") de uma nota em ERROR. */
|
|
185
|
+
export interface IServiceInvoiceReissue {
|
|
186
|
+
status: NfseReissueStatus;
|
|
187
|
+
/** Quantas vezes a correção foi pedida (inclui a tentativa atual). */
|
|
188
|
+
attempts: number;
|
|
189
|
+
last_at: Date;
|
|
190
|
+
last_by: {
|
|
191
|
+
user_id: string;
|
|
192
|
+
login_id?: string;
|
|
193
|
+
name?: string;
|
|
194
|
+
};
|
|
195
|
+
/** Estado da nota no momento do pedido (normalmente ERROR). */
|
|
196
|
+
previous_state: ServiceInvoiceState;
|
|
197
|
+
/** Erro da prefeitura que motivou a correção (o `error` da nota é apagado no sucesso). */
|
|
198
|
+
previous_error?: IProviderInvoiceError;
|
|
199
|
+
changes: INfseReissueChange[];
|
|
200
|
+
/** Etapa em que a falha ocorreu (só quando `status = failed`). */
|
|
201
|
+
stage?: NfseReissueStage;
|
|
202
|
+
provider_status_at_response?: ProviderServiceInvoiceStatus;
|
|
203
|
+
responded_at?: Date;
|
|
204
|
+
error?: {
|
|
205
|
+
http_status?: number;
|
|
206
|
+
code?: string;
|
|
207
|
+
description?: string;
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/** Na nota NOVA: de qual nota ela é a reemissão ("Reemitir como nova"). */
|
|
211
|
+
export interface IServiceInvoiceReissuedFrom {
|
|
212
|
+
invoiceId: string;
|
|
213
|
+
provider_invoice_id?: string;
|
|
214
|
+
number?: string;
|
|
215
|
+
/** Estado da nota de origem no momento da reemissão (CANCELED ou ERROR). */
|
|
216
|
+
state_at_reissue: ServiceInvoiceState;
|
|
217
|
+
at: Date;
|
|
218
|
+
by: {
|
|
219
|
+
user_id: string;
|
|
220
|
+
login_id?: string;
|
|
221
|
+
name?: string;
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/** Na nota de ORIGEM: qual nota a substituiu (uma substituição por origem). */
|
|
225
|
+
export interface IServiceInvoiceReplacedBy {
|
|
226
|
+
/** `pending` = trava gravada, emissão da nova em andamento; `done` = nova emitida. */
|
|
227
|
+
status: "pending" | "done";
|
|
228
|
+
invoiceId?: string;
|
|
229
|
+
provider_invoice_id?: string;
|
|
230
|
+
requested_at: Date;
|
|
231
|
+
requested_by: {
|
|
232
|
+
user_id: string;
|
|
233
|
+
login_id?: string;
|
|
234
|
+
name?: string;
|
|
235
|
+
};
|
|
236
|
+
done_at?: Date;
|
|
237
|
+
}
|
|
238
|
+
/** Alterações pedidas na correção no lugar (todas opcionais; ausente = mantém). */
|
|
239
|
+
export interface INfseReissueChanges {
|
|
240
|
+
value?: number;
|
|
241
|
+
service_description?: string;
|
|
242
|
+
observations?: string;
|
|
243
|
+
deductions?: number;
|
|
244
|
+
taxes?: INfseReissueTaxes;
|
|
245
|
+
}
|
|
246
|
+
/** Entrada do callable `finops_nfse-reissue`. */
|
|
247
|
+
export interface INfseReissueRequest {
|
|
248
|
+
tenant: string;
|
|
249
|
+
invoiceId: string;
|
|
250
|
+
changes: INfseReissueChanges;
|
|
251
|
+
}
|
|
252
|
+
/** Saída do callable `finops_nfse-reissue`. */
|
|
253
|
+
export interface INfseReissueResult {
|
|
254
|
+
invoiceId: string;
|
|
255
|
+
previousState: ServiceInvoiceState;
|
|
256
|
+
state: ServiceInvoiceState;
|
|
257
|
+
providerStatus?: ProviderServiceInvoiceStatus;
|
|
258
|
+
/** Campos efetivamente alterados (vazio = reenvio sem mudanças). */
|
|
259
|
+
changedFields?: NfseReissueField[];
|
|
260
|
+
message: string;
|
|
261
|
+
/** Presente quando o Asaas aceitou mas a gravação local falhou (o webhook reconcilia). */
|
|
262
|
+
warning?: string;
|
|
263
|
+
}
|
|
154
264
|
export interface IServiceInvoice extends IFireDoc {
|
|
155
265
|
providerId: string;
|
|
156
266
|
provider_name?: string;
|
|
@@ -189,6 +299,18 @@ export interface IServiceInvoice extends IFireDoc {
|
|
|
189
299
|
canceled_at?: Date;
|
|
190
300
|
error?: IProviderInvoiceError;
|
|
191
301
|
cancellation?: IServiceInvoiceCancellation;
|
|
302
|
+
/** Última correção no lugar ("Corrigir e reemitir") de nota em ERROR. */
|
|
303
|
+
reissue?: IServiceInvoiceReissue;
|
|
304
|
+
/** Nesta nota (nova): de qual nota ela é a reemissão. */
|
|
305
|
+
reissued_from?: IServiceInvoiceReissuedFrom;
|
|
306
|
+
/** Nesta nota (origem): qual nota a substituiu. */
|
|
307
|
+
replaced_by?: IServiceInvoiceReplacedBy;
|
|
308
|
+
/** Observações enviadas ao provedor (persistidas a partir da feat-292). */
|
|
309
|
+
observations?: string;
|
|
310
|
+
/** Deduções enviadas ao provedor (persistidas a partir da feat-292). */
|
|
311
|
+
deductions?: number;
|
|
312
|
+
/** Data de emissão enviada ao provedor, YYYY-MM-DD (fuso de Brasília). */
|
|
313
|
+
effective_date?: string;
|
|
192
314
|
trace?: ProviderTrace;
|
|
193
315
|
snapshots?: ProviderPayloadSnapshot[];
|
|
194
316
|
[key: string]: unknown;
|
|
@@ -191,6 +191,134 @@ export interface INfseCancelResult {
|
|
|
191
191
|
message: string;
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
+
// ---- Reemissão de NFS-e (feat-292) ----
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Situação da correção no lugar ("Corrigir e reemitir") de uma nota em ERROR.
|
|
198
|
+
* - `requesting`: trava gravada, chamadas ao provedor (GET → PUT → authorize) em andamento.
|
|
199
|
+
* - `requested`: provedor aceitou a correção e a reemissão (o estado final chega pelo webhook).
|
|
200
|
+
* - `failed`: provedor recusou ou a chamada falhou; ver `stage` e `error`.
|
|
201
|
+
*/
|
|
202
|
+
export type NfseReissueStatus = "requesting" | "requested" | "failed";
|
|
203
|
+
|
|
204
|
+
/** Campos que a correção no lugar pode alterar (o PUT do Asaas não muda tomador nem serviço municipal). */
|
|
205
|
+
export type NfseReissueField =
|
|
206
|
+
| "value"
|
|
207
|
+
| "service_description"
|
|
208
|
+
| "observations"
|
|
209
|
+
| "deductions"
|
|
210
|
+
| "taxes";
|
|
211
|
+
|
|
212
|
+
/** Etapa da correção no lugar em que a falha ocorreu. */
|
|
213
|
+
export type NfseReissueStage = "get" | "put" | "authorize";
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Impostos enviados ao provedor (formato do Asaas). O PUT exige o objeto completo;
|
|
217
|
+
* o backend monta a partir do GET + `tax` local + edição, nunca zerando com defaults.
|
|
218
|
+
*/
|
|
219
|
+
export interface INfseReissueTaxes {
|
|
220
|
+
retainIss?: boolean;
|
|
221
|
+
iss?: number;
|
|
222
|
+
pis?: number;
|
|
223
|
+
cofins?: number;
|
|
224
|
+
csll?: number;
|
|
225
|
+
inss?: number;
|
|
226
|
+
ir?: number;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/** Uma alteração aplicada na correção (auditoria). */
|
|
230
|
+
export interface INfseReissueChange {
|
|
231
|
+
field: NfseReissueField;
|
|
232
|
+
from?: unknown;
|
|
233
|
+
to?: unknown;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/** Registro da última correção no lugar ("Corrigir e reemitir") de uma nota em ERROR. */
|
|
237
|
+
export interface IServiceInvoiceReissue {
|
|
238
|
+
status: NfseReissueStatus;
|
|
239
|
+
/** Quantas vezes a correção foi pedida (inclui a tentativa atual). */
|
|
240
|
+
attempts: number;
|
|
241
|
+
last_at: Date;
|
|
242
|
+
last_by: {
|
|
243
|
+
user_id: string;
|
|
244
|
+
login_id?: string;
|
|
245
|
+
name?: string;
|
|
246
|
+
};
|
|
247
|
+
/** Estado da nota no momento do pedido (normalmente ERROR). */
|
|
248
|
+
previous_state: ServiceInvoiceState;
|
|
249
|
+
/** Erro da prefeitura que motivou a correção (o `error` da nota é apagado no sucesso). */
|
|
250
|
+
previous_error?: IProviderInvoiceError;
|
|
251
|
+
changes: INfseReissueChange[];
|
|
252
|
+
/** Etapa em que a falha ocorreu (só quando `status = failed`). */
|
|
253
|
+
stage?: NfseReissueStage;
|
|
254
|
+
provider_status_at_response?: ProviderServiceInvoiceStatus;
|
|
255
|
+
responded_at?: Date;
|
|
256
|
+
error?: {
|
|
257
|
+
http_status?: number;
|
|
258
|
+
code?: string;
|
|
259
|
+
description?: string;
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/** Na nota NOVA: de qual nota ela é a reemissão ("Reemitir como nova"). */
|
|
264
|
+
export interface IServiceInvoiceReissuedFrom {
|
|
265
|
+
invoiceId: string;
|
|
266
|
+
provider_invoice_id?: string;
|
|
267
|
+
number?: string;
|
|
268
|
+
/** Estado da nota de origem no momento da reemissão (CANCELED ou ERROR). */
|
|
269
|
+
state_at_reissue: ServiceInvoiceState;
|
|
270
|
+
at: Date;
|
|
271
|
+
by: {
|
|
272
|
+
user_id: string;
|
|
273
|
+
login_id?: string;
|
|
274
|
+
name?: string;
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/** Na nota de ORIGEM: qual nota a substituiu (uma substituição por origem). */
|
|
279
|
+
export interface IServiceInvoiceReplacedBy {
|
|
280
|
+
/** `pending` = trava gravada, emissão da nova em andamento; `done` = nova emitida. */
|
|
281
|
+
status: "pending" | "done";
|
|
282
|
+
invoiceId?: string;
|
|
283
|
+
provider_invoice_id?: string;
|
|
284
|
+
requested_at: Date;
|
|
285
|
+
requested_by: {
|
|
286
|
+
user_id: string;
|
|
287
|
+
login_id?: string;
|
|
288
|
+
name?: string;
|
|
289
|
+
};
|
|
290
|
+
done_at?: Date;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/** Alterações pedidas na correção no lugar (todas opcionais; ausente = mantém). */
|
|
294
|
+
export interface INfseReissueChanges {
|
|
295
|
+
value?: number;
|
|
296
|
+
service_description?: string;
|
|
297
|
+
observations?: string;
|
|
298
|
+
deductions?: number;
|
|
299
|
+
taxes?: INfseReissueTaxes;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/** Entrada do callable `finops_nfse-reissue`. */
|
|
303
|
+
export interface INfseReissueRequest {
|
|
304
|
+
tenant: string;
|
|
305
|
+
invoiceId: string;
|
|
306
|
+
changes: INfseReissueChanges;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/** Saída do callable `finops_nfse-reissue`. */
|
|
310
|
+
export interface INfseReissueResult {
|
|
311
|
+
invoiceId: string;
|
|
312
|
+
previousState: ServiceInvoiceState;
|
|
313
|
+
state: ServiceInvoiceState;
|
|
314
|
+
providerStatus?: ProviderServiceInvoiceStatus;
|
|
315
|
+
/** Campos efetivamente alterados (vazio = reenvio sem mudanças). */
|
|
316
|
+
changedFields?: NfseReissueField[];
|
|
317
|
+
message: string;
|
|
318
|
+
/** Presente quando o Asaas aceitou mas a gravação local falhou (o webhook reconcilia). */
|
|
319
|
+
warning?: string;
|
|
320
|
+
}
|
|
321
|
+
|
|
194
322
|
export interface IServiceInvoice extends IFireDoc {
|
|
195
323
|
providerId: string;
|
|
196
324
|
provider_name?: string;
|
|
@@ -257,6 +385,20 @@ export interface IServiceInvoice extends IFireDoc {
|
|
|
257
385
|
// Último pedido de cancelamento feito pela plataforma (feat-291)
|
|
258
386
|
cancellation?: IServiceInvoiceCancellation;
|
|
259
387
|
|
|
388
|
+
// Reemissão (feat-292)
|
|
389
|
+
/** Última correção no lugar ("Corrigir e reemitir") de nota em ERROR. */
|
|
390
|
+
reissue?: IServiceInvoiceReissue;
|
|
391
|
+
/** Nesta nota (nova): de qual nota ela é a reemissão. */
|
|
392
|
+
reissued_from?: IServiceInvoiceReissuedFrom;
|
|
393
|
+
/** Nesta nota (origem): qual nota a substituiu. */
|
|
394
|
+
replaced_by?: IServiceInvoiceReplacedBy;
|
|
395
|
+
/** Observações enviadas ao provedor (persistidas a partir da feat-292). */
|
|
396
|
+
observations?: string;
|
|
397
|
+
/** Deduções enviadas ao provedor (persistidas a partir da feat-292). */
|
|
398
|
+
deductions?: number;
|
|
399
|
+
/** Data de emissão enviada ao provedor, YYYY-MM-DD (fuso de Brasília). */
|
|
400
|
+
effective_date?: string;
|
|
401
|
+
|
|
260
402
|
// Debug/audit
|
|
261
403
|
trace?: ProviderTrace;
|
|
262
404
|
snapshots?: ProviderPayloadSnapshot[]; // store last N snapshots (or store separately)
|
|
@@ -32,6 +32,16 @@ export interface IUsageCapabilities {
|
|
|
32
32
|
* desenhada antes dessa data, porque ausência de medição não é consumo zero.
|
|
33
33
|
*/
|
|
34
34
|
telemedicine_since: string | null;
|
|
35
|
+
/**
|
|
36
|
+
* feat-302 F2 — transcrição de áudio medida (evento `media.transcription`).
|
|
37
|
+
* Opcional: produtor antigo não envia; ausente = série não desenhada.
|
|
38
|
+
*/
|
|
39
|
+
transcription?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Data (`YYYY-MM-DD`) do primeiro evento de transcrição medido (sem
|
|
42
|
+
* backfill). `null`/ausente antes do deploy do emissor.
|
|
43
|
+
*/
|
|
44
|
+
transcription_since?: string | null;
|
|
35
45
|
}
|
|
36
46
|
/**
|
|
37
47
|
* Uma linha da abertura por departamento dentro de um mês.
|
|
@@ -94,6 +104,46 @@ export interface IUsageLlm {
|
|
|
94
104
|
tokens_output: number;
|
|
95
105
|
tokens_cache_write: number;
|
|
96
106
|
tokens_cache_read: number;
|
|
107
|
+
/**
|
|
108
|
+
* feat-302 F2 — custo ESTIMADO em US$ (preço de lista, `cost_usd_est` dos
|
|
109
|
+
* eventos). Informativo, não é fatura. `null` quando nenhum evento do mês tem
|
|
110
|
+
* preço conhecido. Opcional: produtor antigo não envia.
|
|
111
|
+
*/
|
|
112
|
+
cost_usd_est?: number | null;
|
|
113
|
+
/**
|
|
114
|
+
* feat-302 F2 — quebra por categoria de produto (visão de custo por tenant).
|
|
115
|
+
* Só categorias com uso no mês aparecem. A soma bate com o total do bloco.
|
|
116
|
+
* Opcional: produtor antigo não envia.
|
|
117
|
+
*/
|
|
118
|
+
por_categoria?: Partial<Record<UsageAiCategory, IUsageLlmCategory>>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* feat-302 F2 — categorias de uso de IA do TENANT (espelho de
|
|
122
|
+
* `AiUsageCategory` do `@evo/hubia`, sem as internas como `csq_judge`).
|
|
123
|
+
* - `hubia`: atendimento (turnos do LLM, reativação, busca de família).
|
|
124
|
+
* - `attachment_analysis`: leitura de foto/PDF pelo classificador de anexos.
|
|
125
|
+
* - `audio_synthesis`: resposta em áudio (reservada; ainda sem emissor).
|
|
126
|
+
*/
|
|
127
|
+
export type UsageAiCategory = "hubia" | "attachment_analysis" | "audio_synthesis";
|
|
128
|
+
export interface IUsageLlmCategory {
|
|
129
|
+
/** Chamadas ao LLM nesta categoria (execuções/análises, dedup por evento). */
|
|
130
|
+
turnos: number;
|
|
131
|
+
tokens_total: number;
|
|
132
|
+
/** US$ estimado (preço de lista); `null` sem preço conhecido. */
|
|
133
|
+
cost_usd_est: number | null;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* feat-302 F2 — transcrição de áudio no mês (Whisper; evento
|
|
137
|
+
* `media.transcription`, 1 por áudio, dedup por mensagem). Informativo: não é
|
|
138
|
+
* cobrado. Bloco `null` = capability desligada (não é consumo zero).
|
|
139
|
+
*/
|
|
140
|
+
export interface IUsageTranscription {
|
|
141
|
+
audios: number;
|
|
142
|
+
segundos: number;
|
|
143
|
+
/** `segundos / 60`, 2 casas. */
|
|
144
|
+
minutos: number;
|
|
145
|
+
/** US$ estimado (preço de lista); `null` sem duração/preço. */
|
|
146
|
+
cost_usd_est: number | null;
|
|
97
147
|
}
|
|
98
148
|
/**
|
|
99
149
|
* Teleconsultas REALIZADAS no mês (feat-160 F18 / D33). Realizada = a consulta
|
|
@@ -119,6 +169,8 @@ export interface IMonthlyUsageRow {
|
|
|
119
169
|
notificacoes: IUsageNotifications;
|
|
120
170
|
ia: IUsageLlm | null;
|
|
121
171
|
telemedicina: IUsageTelemedicine | null;
|
|
172
|
+
/** feat-302 F2 — opcional: produtor antigo não envia; `null` = capability desligada. */
|
|
173
|
+
transcricao?: IUsageTranscription | null;
|
|
122
174
|
}
|
|
123
175
|
export interface IMonthlyUsageResponse {
|
|
124
176
|
ok: true;
|
|
@@ -48,6 +48,16 @@ export interface IUsageCapabilities {
|
|
|
48
48
|
* desenhada antes dessa data, porque ausência de medição não é consumo zero.
|
|
49
49
|
*/
|
|
50
50
|
telemedicine_since: string | null;
|
|
51
|
+
/**
|
|
52
|
+
* feat-302 F2 — transcrição de áudio medida (evento `media.transcription`).
|
|
53
|
+
* Opcional: produtor antigo não envia; ausente = série não desenhada.
|
|
54
|
+
*/
|
|
55
|
+
transcription?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Data (`YYYY-MM-DD`) do primeiro evento de transcrição medido (sem
|
|
58
|
+
* backfill). `null`/ausente antes do deploy do emissor.
|
|
59
|
+
*/
|
|
60
|
+
transcription_since?: string | null;
|
|
51
61
|
}
|
|
52
62
|
|
|
53
63
|
/**
|
|
@@ -114,6 +124,49 @@ export interface IUsageLlm {
|
|
|
114
124
|
tokens_output: number;
|
|
115
125
|
tokens_cache_write: number;
|
|
116
126
|
tokens_cache_read: number;
|
|
127
|
+
/**
|
|
128
|
+
* feat-302 F2 — custo ESTIMADO em US$ (preço de lista, `cost_usd_est` dos
|
|
129
|
+
* eventos). Informativo, não é fatura. `null` quando nenhum evento do mês tem
|
|
130
|
+
* preço conhecido. Opcional: produtor antigo não envia.
|
|
131
|
+
*/
|
|
132
|
+
cost_usd_est?: number | null;
|
|
133
|
+
/**
|
|
134
|
+
* feat-302 F2 — quebra por categoria de produto (visão de custo por tenant).
|
|
135
|
+
* Só categorias com uso no mês aparecem. A soma bate com o total do bloco.
|
|
136
|
+
* Opcional: produtor antigo não envia.
|
|
137
|
+
*/
|
|
138
|
+
por_categoria?: Partial<Record<UsageAiCategory, IUsageLlmCategory>>;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* feat-302 F2 — categorias de uso de IA do TENANT (espelho de
|
|
143
|
+
* `AiUsageCategory` do `@evo/hubia`, sem as internas como `csq_judge`).
|
|
144
|
+
* - `hubia`: atendimento (turnos do LLM, reativação, busca de família).
|
|
145
|
+
* - `attachment_analysis`: leitura de foto/PDF pelo classificador de anexos.
|
|
146
|
+
* - `audio_synthesis`: resposta em áudio (reservada; ainda sem emissor).
|
|
147
|
+
*/
|
|
148
|
+
export type UsageAiCategory = "hubia" | "attachment_analysis" | "audio_synthesis";
|
|
149
|
+
|
|
150
|
+
export interface IUsageLlmCategory {
|
|
151
|
+
/** Chamadas ao LLM nesta categoria (execuções/análises, dedup por evento). */
|
|
152
|
+
turnos: number;
|
|
153
|
+
tokens_total: number;
|
|
154
|
+
/** US$ estimado (preço de lista); `null` sem preço conhecido. */
|
|
155
|
+
cost_usd_est: number | null;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* feat-302 F2 — transcrição de áudio no mês (Whisper; evento
|
|
160
|
+
* `media.transcription`, 1 por áudio, dedup por mensagem). Informativo: não é
|
|
161
|
+
* cobrado. Bloco `null` = capability desligada (não é consumo zero).
|
|
162
|
+
*/
|
|
163
|
+
export interface IUsageTranscription {
|
|
164
|
+
audios: number;
|
|
165
|
+
segundos: number;
|
|
166
|
+
/** `segundos / 60`, 2 casas. */
|
|
167
|
+
minutos: number;
|
|
168
|
+
/** US$ estimado (preço de lista); `null` sem duração/preço. */
|
|
169
|
+
cost_usd_est: number | null;
|
|
117
170
|
}
|
|
118
171
|
|
|
119
172
|
/**
|
|
@@ -141,6 +194,8 @@ export interface IMonthlyUsageRow {
|
|
|
141
194
|
notificacoes: IUsageNotifications;
|
|
142
195
|
ia: IUsageLlm | null;
|
|
143
196
|
telemedicina: IUsageTelemedicine | null;
|
|
197
|
+
/** feat-302 F2 — opcional: produtor antigo não envia; `null` = capability desligada. */
|
|
198
|
+
transcricao?: IUsageTranscription | null;
|
|
144
199
|
}
|
|
145
200
|
|
|
146
201
|
export interface IMonthlyUsageResponse {
|