evo360-types 1.3.734 → 1.3.736

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.
@@ -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.zNfseFeeReimbursementExecuteSchema = 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.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;
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)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evo360-types",
3
- "version": "1.3.734",
3
+ "version": "1.3.736",
4
4
  "description": "HREVO360 Shared Types",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",