evo360-types 1.3.516 → 1.3.520
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.
|
@@ -39,6 +39,23 @@ export interface INexVendasJourneySignature {
|
|
|
39
39
|
signed_at?: Date | null;
|
|
40
40
|
last_error?: string | null;
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* PDF da proposta comercial já persistido no bucket, pronto para virar anexo do
|
|
44
|
+
* envelope de assinatura (feat-136).
|
|
45
|
+
*
|
|
46
|
+
* `sha256` é o hash do HTML **sanitizado** que originou o PDF, não do PDF: é o
|
|
47
|
+
* que permite detectar que o vendedor editou a proposta depois da geração e
|
|
48
|
+
* regerar em vez de anexar um documento obsoleto. `storage_path` é o objeto
|
|
49
|
+
* determinístico derivado desse mesmo hash.
|
|
50
|
+
*/
|
|
51
|
+
export interface INexVendasJourneyProposalPdf {
|
|
52
|
+
/** Caminho do objeto no bucket, sem o `gs://` e sem o nome do bucket. */
|
|
53
|
+
storage_path: string;
|
|
54
|
+
/** SHA-256 hex do HTML SANITIZADO que gerou o PDF. */
|
|
55
|
+
sha256: string;
|
|
56
|
+
size_bytes: number;
|
|
57
|
+
generated_at: Date;
|
|
58
|
+
}
|
|
42
59
|
export interface INexVendasJourneyCompany {
|
|
43
60
|
legal_name?: string | null;
|
|
44
61
|
trade_name?: string | null;
|
|
@@ -57,6 +74,15 @@ export interface INexVendasJourneyCustomerData {
|
|
|
57
74
|
email: string;
|
|
58
75
|
phone: string;
|
|
59
76
|
company?: INexVendasJourneyCompany | null;
|
|
77
|
+
/**
|
|
78
|
+
* CPF de quem assina o contrato (variável `RESPONSAVEL_CPF`), só dígitos.
|
|
79
|
+
*
|
|
80
|
+
* Existe separado de `company.document_number` porque no cadastro PJ aquele
|
|
81
|
+
* campo é o CNPJ e o contrato imprime o CPF do representante legal abaixo do
|
|
82
|
+
* nome, na região da assinatura. No cadastro PF os dois coincidem — o form
|
|
83
|
+
* replica o documento aqui em vez de perguntar duas vezes.
|
|
84
|
+
*/
|
|
85
|
+
responsible_cpf?: string | null;
|
|
60
86
|
}
|
|
61
87
|
/**
|
|
62
88
|
* Métodos que o passo `g` oferece. Espelha `NexFinopsProposalPaymentMethod`: a
|
|
@@ -178,15 +204,20 @@ export interface INexVendasJourneyNotification {
|
|
|
178
204
|
}
|
|
179
205
|
/**
|
|
180
206
|
* Slots que disparam efeito externo NÃO-idempotente e por isso precisam de
|
|
181
|
-
* reserva transacional: criar o contrato, criar o envelope de assinatura
|
|
182
|
-
* (feat-131) criar o artefato de pagamento
|
|
207
|
+
* reserva transacional: criar o contrato, criar o envelope de assinatura,
|
|
208
|
+
* (feat-131) criar o artefato de pagamento e (feat-136) renderizar o PDF da
|
|
209
|
+
* proposta.
|
|
210
|
+
*
|
|
211
|
+
* `payment` difere dos outros num ponto: contrato e envelope são efeito ÚNICO
|
|
212
|
+
* por jornada, enquanto o artefato de pagamento pode legitimamente ser recriado
|
|
213
|
+
* quando o cliente troca de método. Por isso o slot de pagamento é um mutex
|
|
214
|
+
* puro — não tem valor "definitivo" que o torne `already_done`.
|
|
183
215
|
*
|
|
184
|
-
* `
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
* mutex puro — não tem valor "definitivo" que o torne `already_done`.
|
|
216
|
+
* `proposal_pdf` também é mutex puro, por motivo diferente: o PDF é reemitido
|
|
217
|
+
* quando o vendedor edita o `html_content`, e o "já feito" é decidido por
|
|
218
|
+
* comparação de hash antes do claim, não pela presença do campo.
|
|
188
219
|
*/
|
|
189
|
-
export type NexVendasJourneySlot = 'contract' | 'signature' | 'payment';
|
|
220
|
+
export type NexVendasJourneySlot = 'contract' | 'signature' | 'payment' | 'proposal_pdf';
|
|
190
221
|
/**
|
|
191
222
|
* Marca de reserva de um slot, gravada e liberada dentro de transaction.
|
|
192
223
|
*
|
|
@@ -218,6 +249,12 @@ export interface INexVendasJourney extends IFireGlobalDoc {
|
|
|
218
249
|
customer_data?: INexVendasJourneyCustomerData | null;
|
|
219
250
|
signature?: INexVendasJourneySignature | null;
|
|
220
251
|
payment?: INexVendasJourneyPayment | null;
|
|
252
|
+
/**
|
|
253
|
+
* PDF da proposta pronto para anexar ao envelope (feat-136). Ausente = ainda
|
|
254
|
+
* não gerado, ou proposta sem `html_content` — nos dois casos o envelope sai
|
|
255
|
+
* sem anexo.
|
|
256
|
+
*/
|
|
257
|
+
proposal_pdf?: INexVendasJourneyProposalPdf | null;
|
|
221
258
|
/**
|
|
222
259
|
* Espelho PLANO de todo id externo de pagamento que a jornada já produziu —
|
|
223
260
|
* checkout, cobrança, assinatura e link, **inclusive os superseded**.
|
|
@@ -93,6 +93,26 @@ export interface INexVendasJourneySignature {
|
|
|
93
93
|
last_error?: string | null;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
// ── PDF da proposta (anexo do envelope) ──
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* PDF da proposta comercial já persistido no bucket, pronto para virar anexo do
|
|
100
|
+
* envelope de assinatura (feat-136).
|
|
101
|
+
*
|
|
102
|
+
* `sha256` é o hash do HTML **sanitizado** que originou o PDF, não do PDF: é o
|
|
103
|
+
* que permite detectar que o vendedor editou a proposta depois da geração e
|
|
104
|
+
* regerar em vez de anexar um documento obsoleto. `storage_path` é o objeto
|
|
105
|
+
* determinístico derivado desse mesmo hash.
|
|
106
|
+
*/
|
|
107
|
+
export interface INexVendasJourneyProposalPdf {
|
|
108
|
+
/** Caminho do objeto no bucket, sem o `gs://` e sem o nome do bucket. */
|
|
109
|
+
storage_path: string;
|
|
110
|
+
/** SHA-256 hex do HTML SANITIZADO que gerou o PDF. */
|
|
111
|
+
sha256: string;
|
|
112
|
+
size_bytes: number;
|
|
113
|
+
generated_at: Date;
|
|
114
|
+
}
|
|
115
|
+
|
|
96
116
|
// ── Dados de identificação coletados ──
|
|
97
117
|
|
|
98
118
|
export interface INexVendasJourneyCompany {
|
|
@@ -114,6 +134,15 @@ export interface INexVendasJourneyCustomerData {
|
|
|
114
134
|
email: string;
|
|
115
135
|
phone: string;
|
|
116
136
|
company?: INexVendasJourneyCompany | null;
|
|
137
|
+
/**
|
|
138
|
+
* CPF de quem assina o contrato (variável `RESPONSAVEL_CPF`), só dígitos.
|
|
139
|
+
*
|
|
140
|
+
* Existe separado de `company.document_number` porque no cadastro PJ aquele
|
|
141
|
+
* campo é o CNPJ e o contrato imprime o CPF do representante legal abaixo do
|
|
142
|
+
* nome, na região da assinatura. No cadastro PF os dois coincidem — o form
|
|
143
|
+
* replica o documento aqui em vez de perguntar duas vezes.
|
|
144
|
+
*/
|
|
145
|
+
responsible_cpf?: string | null;
|
|
117
146
|
}
|
|
118
147
|
|
|
119
148
|
// ── Pagamento (feat-131) ──
|
|
@@ -266,15 +295,20 @@ export interface INexVendasJourneyNotification {
|
|
|
266
295
|
|
|
267
296
|
/**
|
|
268
297
|
* Slots que disparam efeito externo NÃO-idempotente e por isso precisam de
|
|
269
|
-
* reserva transacional: criar o contrato, criar o envelope de assinatura
|
|
270
|
-
* (feat-131) criar o artefato de pagamento
|
|
298
|
+
* reserva transacional: criar o contrato, criar o envelope de assinatura,
|
|
299
|
+
* (feat-131) criar o artefato de pagamento e (feat-136) renderizar o PDF da
|
|
300
|
+
* proposta.
|
|
301
|
+
*
|
|
302
|
+
* `payment` difere dos outros num ponto: contrato e envelope são efeito ÚNICO
|
|
303
|
+
* por jornada, enquanto o artefato de pagamento pode legitimamente ser recriado
|
|
304
|
+
* quando o cliente troca de método. Por isso o slot de pagamento é um mutex
|
|
305
|
+
* puro — não tem valor "definitivo" que o torne `already_done`.
|
|
271
306
|
*
|
|
272
|
-
* `
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
* mutex puro — não tem valor "definitivo" que o torne `already_done`.
|
|
307
|
+
* `proposal_pdf` também é mutex puro, por motivo diferente: o PDF é reemitido
|
|
308
|
+
* quando o vendedor edita o `html_content`, e o "já feito" é decidido por
|
|
309
|
+
* comparação de hash antes do claim, não pela presença do campo.
|
|
276
310
|
*/
|
|
277
|
-
export type NexVendasJourneySlot = 'contract' | 'signature' | 'payment';
|
|
311
|
+
export type NexVendasJourneySlot = 'contract' | 'signature' | 'payment' | 'proposal_pdf';
|
|
278
312
|
|
|
279
313
|
/**
|
|
280
314
|
* Marca de reserva de um slot, gravada e liberada dentro de transaction.
|
|
@@ -314,6 +348,13 @@ export interface INexVendasJourney extends IFireGlobalDoc {
|
|
|
314
348
|
signature?: INexVendasJourneySignature | null;
|
|
315
349
|
payment?: INexVendasJourneyPayment | null;
|
|
316
350
|
|
|
351
|
+
/**
|
|
352
|
+
* PDF da proposta pronto para anexar ao envelope (feat-136). Ausente = ainda
|
|
353
|
+
* não gerado, ou proposta sem `html_content` — nos dois casos o envelope sai
|
|
354
|
+
* sem anexo.
|
|
355
|
+
*/
|
|
356
|
+
proposal_pdf?: INexVendasJourneyProposalPdf | null;
|
|
357
|
+
|
|
317
358
|
/**
|
|
318
359
|
* Espelho PLANO de todo id externo de pagamento que a jornada já produziu —
|
|
319
360
|
* checkout, cobrança, assinatura e link, **inclusive os superseded**.
|