Envio de casoCase uploadEnvío de caso
A transação de escrita que envia a resolução de um chamado (caso) para o backend, via o Dispatcher. Quando o representante de vendas encerra um chamado com um comentário, o app despacha essa atualização — o chamado passa a constar como encerrado no sistema. Um único builder monta o payload; toda a construção do contrato wire vive nele. The write transaction that sends a case (ticket) resolution to the backend, through the Dispatcher. When the sales rep closes a case with a comment, the app dispatches that update — the case then reads as closed in the system. A single builder assembles the payload; all wire-contract construction lives in it. La transacción de escritura que envía la resolución de un caso (ticket) al backend, vía el Dispatcher. Cuando el representante de ventas cierra un caso con un comentario, la app despacha esa actualización — el caso pasa a figurar como cerrado en el sistema. Un único builder arma el payload; toda la construcción del contrato wire vive en él.
O que é e quando aconteceWhat it is and when it happensQué es y cuándo ocurre
Um chamado (caso) é uma solicitação ou reclamação registrada para um varejo — por exemplo, um problema com um produto ou um pedido. Esta transação é o momento em que o representante de vendas encerra um chamado: ele escreve um comentário explicando a resolução e o app envia essa atualização ao backend. A partir daí, o chamado passa a constar como encerrado no sistema. A case (ticket) is a request or complaint logged for a retail — for example, a problem with a product or an order. This transaction is the moment the sales rep closes a case: they write a comment explaining the resolution and the app sends that update to the backend. From then on, the case reads as closed in the system. Un caso (ticket) es una solicitud o reclamo registrado para un punto de venta — por ejemplo, un problema con un producto o un pedido. Esta transacción es el momento en que el representante de ventas cierra un caso: escribe un comentario explicando la resolución y la app envía esa actualización al backend. A partir de ahí, el caso figura como cerrado en el sistema.
Sempre encerraAlways closesSiempre cierra Hoje esta transação sempre encerra o chamado — o comentário do rep é o motivo do encerramento. Não há, por enquanto, envio para deixar o chamado aberto ou em outro estado. Today this transaction always closes the case — the rep's comment is the closing reason. There's no send, for now, to leave the case open or in another state. Hoy esta transacción siempre cierra el caso — el comentario del rep es el motivo del cierre. No hay, por ahora, envío para dejar el caso abierto o en otro estado.
Só no BrasilBrazil onlySolo Brasil A funcionalidade de chamados, e portanto este envio, existe apenas no Brasil. The cases feature, and therefore this send, exists only in Brazil. La funcionalidad de casos, y por tanto este envío, existe solo en Brasil.
Fluxo de telas que disparaScreen flow that fires itFlujo de pantallas que lo dispara
A transação é o último passo do fluxo de chamados. As telas do caminho pertencem à feature de Chamados; aqui só situamos onde o envio acontece:The transaction is the last step of the cases flow. The screens along the way belong to the Cases feature; here we only place where the send happens:La transacción es el último paso del flujo de casos. Las pantallas del camino pertenecen a la feature de Casos; aquí solo situamos dónde ocurre el envío:
- Lista de chamadosCase listLista de casosO rep abre a feature de Chamados e vê os casos do varejo.The rep opens the Cases feature and sees the retail's cases.El rep abre la feature de Casos y ve los casos del punto de venta.
- Detalhe do chamadoCase detailDetalle del casoSeleciona um chamado e revê seus dados (assunto, contato, histórico).Selects a case and reviews its data (subject, contact, history).Selecciona un caso y revisa sus datos (asunto, contacto, historial).
- Escrever o comentárioWrite the commentEscribir el comentarioDigita o comentário que explica a resolução do chamado.Types the comment explaining the case resolution.Escribe el comentario que explica la resolución del caso.
- Encerrar chamado → esta transaçãoClose case → this transactionCerrar caso → esta transacciónAo confirmar o encerramento, o app dispara o Envio de caso. É este toque que aciona a transação.On confirming the close, the app fires Case upload. This tap is what triggers the transaction.Al confirmar el cierre, la app dispara el Envío de caso. Este toque es lo que activa la transacción.
Depois do envioAfter sendingDespués del envío
- Confirmação ao repConfirmation to the repConfirmación al rep
- Quando o backend aceita, o chamado passa a constar como encerrado, com o comentário do rep registrado como motivo.When the backend accepts it, the case reads as closed, with the rep's comment recorded as the reason.Cuando el backend lo acepta, el caso figura como cerrado, con el comentario del rep registrado como motivo.
- Sem internetOfflineSin internet
- O envio pode entrar em fila e ser reenviado quando a conexão volta — o rep não perde o encerramento. O sistema usa um identificador de transação para evitar duplicações no reenvio.The send may be queued and retried when the connection returns — the rep doesn't lose the close. The system uses a transaction id to avoid duplication on retry.El envío puede quedar en cola y reintentarse cuando vuelve la conexión — el rep no pierde el cierre. El sistema usa un identificador de transacción para evitar duplicaciones en el reenvío.
- Acompanhar o envioTracking the sendSeguir el envío
- O status técnico do despacho (enviado, em fila, com erro) pode ser acompanhado na central de dados / tracking de despachos do app — útil para suporte investigar um envio.The dispatch's technical status (sent, queued, errored) can be followed in the app's data center / dispatch tracking — useful for support to investigate a send.El estado técnico del despacho (enviado, en cola, con error) puede seguirse en el centro de datos / tracking de despachos de la app — útil para que soporte investigue un envío.
Visão técnicaTechnical overviewVisión técnica
Envio de caso é a transação de saída que persiste o encerramento de um chamado no backend (Salesforce). É disparada pelo fluxo de Chamados quando o representante de vendas encerra um caso com um comentário. É uma transação enxuta: um único objeto CaseUploadInfo com 8 campos, sem variantes.
Case upload is the outbound transaction that persists a case's closing in the backend (Salesforce). It's fired by the Cases flow when the sales rep closes a case with a comment. It's a lean transaction: a single CaseUploadInfo object with 8 fields, no variants.
Envío de caso es la transacción de salida que persiste el cierre de un caso en el backend (Salesforce). Se dispara desde el flujo de Casos cuando el representante de ventas cierra un caso con un comentario. Es una transacción escueta: un único objeto CaseUploadInfo con 8 campos, sin variantes.
Sempre "Closed"Always "Closed"Siempre "Closed"
O builder emite Status: "Closed" fixo — a transação sempre encerra o chamado. O motivo é o comentário do rep, em CReason.The builder emits a fixed Status: "Closed" — the transaction always closes the case. The reason is the rep's comment, in CReason.El builder emite Status: "Closed" fijo — la transacción siempre cierra el caso. El motivo es el comentario del rep, en CReason.
Payload mínimoMinimal payloadPayload mínimo
Só 3 dos 8 campos carregam dado real (CReason, CaseID, UpdById); os outros 5 são placeholders fixos do contrato.Only 3 of the 8 fields carry real data (CReason, CaseID, UpdById); the other 5 are fixed contract placeholders.Solo 3 de los 8 campos llevan dato real (CReason, CaseID, UpdById); los otros 5 son placeholders fijos del contrato.
RPC genéricoGeneric RPCRPC genérico
Não há RPC por caso: tudo passa pelo mesmo sendTransaction, com o JSON no campo message e CaseUploadAPI como serviceName discriminador.There's no per-case RPC: everything goes through the same sendTransaction, with the JSON in the message field and CaseUploadAPI as the discriminating serviceName.No hay RPC por caso: todo pasa por el mismo sendTransaction, con el JSON en el campo message y CaseUploadAPI como serviceName discriminador.
FontesSourcesFuentes
BuildCaseUploadDispatcherPayloadUseCase + CaseUploadDispatcherPayloadInput + DispatcherType.caseUpload + DispatcherConectaRep.proto. O input carrega entities cruas de domínio (CLAUDE.md §36); o build() constrói todo o wire.
BuildCaseUploadDispatcherPayloadUseCase + CaseUploadDispatcherPayloadInput + DispatcherType.caseUpload + DispatcherConectaRep.proto. The input carries raw domain entities (CLAUDE.md §36); build() constructs the entire wire.
BuildCaseUploadDispatcherPayloadUseCase + CaseUploadDispatcherPayloadInput + DispatcherType.caseUpload + DispatcherConectaRep.proto. El input lleva entities crudas de dominio (CLAUDE.md §36); build() construye todo el wire.
Transporte gRPCgRPC transportTransporte gRPC
DispatcherConectaRep.proto · proto3 · package mn.bat.conectarep.dispatcher. O serviço expõe um único RPC genérico — não existe mensagem por transação. TODA transação de escrita do app usa este mesmo sendTransaction; o que muda é o serviceName (discriminador) e o JSON dentro de message.The service exposes a single generic RPC — there's no per-transaction message. EVERY write transaction in the app uses this same sendTransaction; what changes is the serviceName (discriminator) and the JSON inside message.El servicio expone un único RPC genérico — no existe mensaje por transacción. TODA transacción de escritura de la app usa este mismo sendTransaction; lo que cambia es el serviceName (discriminador) y el JSON dentro de message.
sendTransactionunaryrpc sendTransaction(InboxTransactionRequest) returns (InboxTransactionReply)
path /mn.bat.conectarep.dispatcher.DispatcherConectaRepService/sendTransaction
InboxTransactionRequestendpointstring· #1 · endpoint alvo (config de ambiente)target endpoint (environment config)endpoint destino (config de ambiente)serviceNamestring· #2 · discriminador —CaseUploadAPI(sem prefixoPromo_:hasPromotion: false)discriminator —CaseUploadAPI(noPromo_prefix:hasPromotion: false)discriminador —CaseUploadAPI(sin prefijoPromo_:hasPromotion: false)dateReferencestring· #3 ·AAAA-MM-DDdo envio (DateTimeUtils.formatDate(input.submittedAt),isoDate)YYYY-MM-DDof the submission (DateTimeUtils.formatDate(input.submittedAt),isoDate)AAAA-MM-DDdel envío (DateTimeUtils.formatDate(input.submittedAt),isoDate)transactionReferencestring· #4 · ocaseEntity.id(correlação)thecaseEntity.id(correlation)elcaseEntity.id(correlación)usernamestring· #5messagestring· #6 · o payload JSON serializado (a tabela da seção 08)the JSON payload serialized (the table in section 08)el payload JSON serializado (la tabla de la sección 08)manufacturerstring· #7 · dado do dispositivodevice datadato del dispositivomodelstring· #8 · dado do dispositivodevice datadato del dispositivodeviceUuidstring· #9 · literal provisório hoje (ver Pendências)provisional literal today (see Pending)literal provisional hoy (ver Pendientes)deviceVersionstring· #10tidint64· #11 · id de transação para idempotência/replaytransaction id for idempotency/replayid de transacción para idempotencia/replay
InboxTransactionReplystatusint32· #1 · status do ack (0 = sucesso)ack status (0 = success)status del ack (0 = éxito)messagestring· #2 · mensagem do backendbackend messagemensaje del backendtransactionIdint32· #3 · id atribuído pelo backend (correlação)backend-assigned id (correlation)id asignado por el backend (correlación)
Envelope → Request
O builder devolve um DispatcherEnvelope (type, serviceName, payload, account, transactionReference, dateReference). O account é um DispatchAccountEntity com sapCode = caseEntity.sapCustomerId ?? "" e name = caseEntity.storeName ?? "" (identifica o varejo do chamado). O DispatcherGateway serializa payload em JSON para message, copia serviceName/dateReference/transactionReference, preenche os campos de dispositivo e o bearer token de auth, e chama o RPC.
The builder returns a DispatcherEnvelope (type, serviceName, payload, account, transactionReference, dateReference). The account is a DispatchAccountEntity with sapCode = caseEntity.sapCustomerId ?? "" and name = caseEntity.storeName ?? "" (identifies the case's retail). The DispatcherGateway serializes payload to JSON into message, copies serviceName/dateReference/transactionReference, fills in the device fields and the auth bearer token, and calls the RPC.
El builder devuelve un DispatcherEnvelope (type, serviceName, payload, account, transactionReference, dateReference). El account es un DispatchAccountEntity con sapCode = caseEntity.sapCustomerId ?? "" y name = caseEntity.storeName ?? "" (identifica el punto de venta del caso). El DispatcherGateway serializa payload a JSON en message, copia serviceName/dateReference/transactionReference, completa los campos del dispositivo y el bearer token de auth, y llama al RPC.
Para o envio de caso, resendMayDuplicate == true (não está na lista de leves): um reenvio (ex.: recuperação de fila offline) pode duplicar a atualização no backend; a idempotência via tid é o que mitiga isso.For case upload, resendMayDuplicate == true (not in the lightweight list): a resend (e.g. offline-queue recovery) may duplicate the update on the backend; idempotency via tid is what mitigates it.Para el envío de caso, resendMayDuplicate == true (no está en la lista de livianos): un reenvío (p. ej. recuperación de cola offline) puede duplicar la actualización en el backend; la idempotencia vía tid es lo que lo mitiga.
serviceName e destinoserviceName & destinationserviceName y destino
Uma única transação, sem variantes. Não há prefixo Promo_ (o builder chama type.resolveServiceName(hasPromotion: false)). O destino é o Salesforce (DispatcherDestination.salesforce, o default do enum).A single transaction, no variants. There's no Promo_ prefix (the builder calls type.resolveServiceName(hasPromotion: false)). The destination is Salesforce (DispatcherDestination.salesforce, the enum default).Una única transacción, sin variantes. No hay prefijo Promo_ (el builder llama type.resolveServiceName(hasPromotion: false)). El destino es Salesforce (DispatcherDestination.salesforce, el default del enum).
DispatcherType |
serviceName |
DestinoDestinationDestino | MercadosMarketsMercados |
|---|---|---|---|
caseUpload | CaseUploadAPI | salesforce | BR |
Como é disparadoHow it's firedCómo se dispara
A transação é orquestrada pelo fluxo de chamados (remote-first, §36). O notifier apenas reúne entities cruas e valores injetados; o builder é o dono único de todo rename, formatação de data, trim() e derivação wire. A cascata:The transaction is orchestrated by the cases flow (remote-first, §36). The notifier only gathers raw entities and injected values; the builder is the sole owner of every rename, date formatting, trim() and wire derivation. The cascade:La transacción se orquesta desde el flujo de casos (remote-first, §36). El notifier solo reúne entities crudas y valores inyectados; el builder es el dueño único de todo rename, formateo de fecha, trim() y derivación wire. La cascada:
- Cases flownotifier
- reúne entities cruas + injetadosgathers raw entities + injectedreúne entities crudas + inyectadosCaseUploadDispatcherPayloadInput
- build()BuildCaseUploadDispatcherPayloadUseCasemonta o wireassembles the wirearma el wire
- devolvereturnsdevuelveDispatcherEnvelope
- SubmitCaseUploadUseCaseDispatcherOrchestrator
- serializa + authserialize + authserializa + authDispatcherGateway
- sendTransactionBackendgRPC · Salesforce
- serializa + authserialize + authserializa + authDispatcherGateway
- SubmitCaseUploadUseCaseDispatcherOrchestrator
- devolvereturnsdevuelveDispatcherEnvelope
- build()BuildCaseUploadDispatcherPayloadUseCasemonta o wireassembles the wirearma el wire
- reúne entities cruas + injetadosgathers raw entities + injectedreúne entities crudas + inyectadosCaseUploadDispatcherPayloadInput
O input (entities cruas)The input (raw entities)El input (entities crudas)
CaseUploadDispatcherPayloadInput (Freezed). Carrega o dado como existe no domínio; nada de formato wire. O relógio chega como submittedAt (via DateTimeUtils.now()).CaseUploadDispatcherPayloadInput (Freezed). Carries data as it exists in the domain; no wire shaping. The clock arrives as submittedAt (via DateTimeUtils.now()).CaseUploadDispatcherPayloadInput (Freezed). Lleva el dato como existe en el dominio; nada de formato wire. El reloj llega como submittedAt (vía DateTimeUtils.now()).
| CampoFieldCampo | TipoTypeTipo | PapelRoleRol |
|---|---|---|
caseEntity | CaseEntity | chamado cru — o builder deriva CaseID (id), o account (sapCustomerId, storeName) e o transactionReferenceraw case — the builder derives CaseID (id), the account (sapCustomerId, storeName) and the transactionReferencecaso crudo — el builder deriva CaseID (id), el account (sapCustomerId, storeName) y el transactionReference |
resource | ResourceEntity | representante de vendas (cru — o builder deriva UpdById = resource.name)sales rep (raw — the builder derives UpdById = resource.name)representante de ventas (crudo — el builder deriva UpdById = resource.name) |
comment | String | comentário/motivo do encerramento (→ CReason, com trim())closing comment/reason (→ CReason, with trim())comentario/motivo del cierre (→ CReason, con trim()) |
submittedAt | DateTime | relógio do envio (→ dateReference, via DateTimeUtils.now())submission clock (→ dateReference, via DateTimeUtils.now())reloj del envío (→ dateReference, vía DateTimeUtils.now()) |
Payload (message)
O JSON serializado no campo message do request. Cada tabela abaixo tem 4 colunas — Campo JSON · Tipo · Origem do Dado · Regra — e lista toda chave que o build() emite (9 no total: 1 raiz + 8 no objeto). Campo, Tipo e Origem são código cru; só a Regra é prosa. Um exemplo completo (BR) está em transaction_example.json, ao lado deste doc.The JSON serialized into the request's message field. Each table below has 4 columns — JSON field · Type · Data source · Rule — and lists every key that build() emits (9 in total: 1 root + 8 in the object). Field, Type and Source are raw code; only Rule is prose. A full example (BR) sits in transaction_example.json, next to this doc.El JSON serializado en el campo message del request. Cada tabla abajo tiene 4 columnas — Campo JSON · Tipo · Origen del Dato · Regla — y lista toda clave que build() emite (9 en total: 1 raíz + 8 en el objeto). Campo, Tipo y Origen son código crudo; solo la Regla es prosa. Un ejemplo completo (BR) está en transaction_example.json, junto a este doc.
Raiz do payloadPayload rootRaíz del payload
| Campo JSON | TipoTypeTipo | Origem do DadoData sourceOrigen del Dato | RegraRuleRegla |
|---|---|---|---|
CaseUploadInfo | array | [caseUploadInfo] | array de um único objeto (o chamado)single-element array (the case)array de un solo objeto (el caso) |
CaseUploadInfo objeto únicosingle objectobjeto único 8 camposfieldscampos
Campo JSON TipoTypeTipo Origem do DadoData sourceOrigen del Dato RegraRuleRegla RetailerIDstring Fixo: ""contrato · inerte (o backend correlaciona pelo CaseID)contract · inert (the backend correlates byCaseID)contrato · inerte (el backend correlaciona porCaseID)compstring Fixo: ""contrato · inertecontract · inertcontrato · inerte ManFstring Fixo: ""contrato · inertecontract · inertcontrato · inerte Notestring Fixo: ""contrato · inerte (a observação vai em CReason)contract · inert (the note goes inCReason)contrato · inerte (la observación va enCReason)Statusstring Fixo: "Closed"o envio sempre encerra o chamado (ver Pendências)the send always closes the case (see Pending)el envío siempre cierra el caso (ver Pendientes) CReasonstring input.comment.trim()comentário/motivo do rep, com trim()rep's comment/reason, withtrim()comentario/motivo del rep, contrim()CaseIDstring input.caseEntity.idid do chamado (também vira transactionReference)case id (also becomestransactionReference)id del caso (también pasa atransactionReference)UpdByIdstring input.resource.namenome do representante de vendas que atualizouname of the sales rep who updatednombre del representante de ventas que actualizó
Regras de negócioBusiness rulesReglas de negocio
Status fixo "Closed"Fixed "Closed" statusStatus fijo "Closed" Status
O builder emite Status: "Closed" literal, sem condição. Toda vez que a transação é disparada, ela encerra o chamado — não há caminho no build() que envie outro estado.The builder emits a literal Status: "Closed", unconditionally. Every time the transaction fires, it closes the case — there's no path in build() that sends another state.El builder emite Status: "Closed" literal, sin condición. Cada vez que la transacción se dispara, cierra el caso — no hay camino en build() que envíe otro estado.
Comentário com trim()Comment with trim()Comentario con trim() CReason
O comentário do rep é o único texto livre do payload. O builder aplica trim() (remove espaços nas pontas) antes de emitir em CReason. O build() não valida se está vazio — a garantia de conteúdo é responsabilidade da feature de Chamados a montante.The rep's comment is the payload's only free text. The builder applies trim() (strips edge whitespace) before emitting it in CReason. build() doesn't validate emptiness — ensuring content is the upstream Cases feature's responsibility.El comentario del rep es el único texto libre del payload. El builder aplica trim() (quita espacios en los extremos) antes de emitirlo en CReason. build() no valida si está vacío — garantizar contenido es responsabilidad de la feature de Casos aguas arriba.
Identificação do varejo (account)Retail identification (account)Identificación del punto de venta (account) DispatchAccountEntity
O account do envelope vem do próprio chamado: sapCode = caseEntity.sapCustomerId ?? "" e name = caseEntity.storeName ?? "". Ambos são opcionais na CaseEntity; quando nulos, caem para string vazia (nunca lançam). O account não entra no payload JSON — serve ao tracking/roteamento do Dispatcher.The envelope's account comes from the case itself: sapCode = caseEntity.sapCustomerId ?? "" and name = caseEntity.storeName ?? "". Both are optional on CaseEntity; when null, they fall back to an empty string (never throw). The account isn't part of the JSON payload — it serves the Dispatcher's tracking/routing.El account del envelope viene del propio caso: sapCode = caseEntity.sapCustomerId ?? "" y name = caseEntity.storeName ?? "". Ambos son opcionales en CaseEntity; cuando nulos, caen a string vacía (nunca lanzan). El account no entra en el payload JSON — sirve al tracking/routing del Dispatcher.
dateReference do envioSubmission dateReferencedateReference del envío dateReference
dateReference = DateTimeUtils.formatDate(dateTime: input.submittedAt) — o formato default é DateFormatType.isoDate (AAAA-MM-DD). O submittedAt é o relógio único do app (DateTimeUtils.now()), injetado pelo notifier. Vai no envelope, não no payload JSON.dateReference = DateTimeUtils.formatDate(dateTime: input.submittedAt) — the default format is DateFormatType.isoDate (YYYY-MM-DD). submittedAt is the app's single clock (DateTimeUtils.now()), injected by the notifier. It goes in the envelope, not the JSON payload.dateReference = DateTimeUtils.formatDate(dateTime: input.submittedAt) — el formato default es DateFormatType.isoDate (AAAA-MM-DD). submittedAt es el reloj único de la app (DateTimeUtils.now()), inyectado por el notifier. Va en el envelope, no en el payload JSON.
Pendências / roadmapPending / roadmapPendientes / roadmap
O que o builder ainda não preenche ou envia inerte, documentado fiel ao estado atual do código (nunca descrito como se já existisse):What the builder does not yet fill, or ships inert, documented faithfully to the current code state (never described as already existing):Lo que el builder aún no completa, o envía inerte, documentado fiel al estado actual del código (nunca descrito como si ya existiera):
Não portado / pendenteNot ported / pendingNo portado / pendiente
Status: fixo em"Closed"— não há hoje como enviar outro estado (reabrir, escalar, etc.). Um encerramento é o único gesto suportado.Status: fixed at"Closed"— there's no way today to send another state (reopen, escalate, etc.). A close is the only supported gesture.Status: fijo en"Closed"— hoy no hay forma de enviar otro estado (reabrir, escalar, etc.). Un cierre es el único gesto soportado.RetailerID,comp,ManF,Note: sempre""— placeholders inertes do contrato; o app não popula nenhum.RetailerID,comp,ManF,Note: always""— inert contract placeholders; the app populates none.RetailerID,comp,ManF,Note: siempre""— placeholders inertes del contrato; la app no puebla ninguno.UpdByIdemite o nome do rep (resource.name), não um id — o nome da chave sugere um identificador, mas o builder envia o nome legível.UpdByIdemits the rep's name (resource.name), not an id — the key name suggests an identifier, but the builder sends the readable name.UpdByIdemite el nombre del rep (resource.name), no un id — el nombre de la clave sugiere un identificador, pero el builder envía el nombre legible.- Transporte:
deviceUuidvai como literal provisório no gateway (pendência conhecida do Dispatcher).Transport:deviceUuidships as a provisional literal in the gateway (known Dispatcher pending item).Transporte:deviceUuidva como literal provisional en el gateway (pendiente conocido del Dispatcher).
Feature donaOwning featureFeature dueña As telas, estados e regras de conteúdo do chamado vivem na feature de Chamados — este doc cobre só o despacho. The case screens, states and content rules live in the Cases feature — this doc covers only the dispatch. Las pantallas, estados y reglas de contenido del caso viven en la feature de Casos — este doc cubre solo el despacho.
MercadosMarketsMercados
A disponibilidade da transação vem do DispatcherType.caseUpload.enabledMarkets — só Brasil. Nenhum outro mercado dispara o Envio de caso.Transaction availability comes from DispatcherType.caseUpload.enabledMarkets — Brazil only. No other market fires Case upload.La disponibilidad de la transacción viene de DispatcherType.caseUpload.enabledMarkets — solo Brasil. Ningún otro mercado dispara el Envío de caso.
Só no BrasilBrazil onlySolo Brasil A feature de Chamados e o Envio de caso existem apenas no Brasil. O destino é o Salesforce. The Cases feature and Case upload exist only in Brazil. The destination is Salesforce. La feature de Casos y el Envío de caso existen solo en Brasil. El destino es Salesforce.
CL · ZA · AR · PY · PE
Não têm dispatcher de caso — caseUpload.enabledMarkets lista apenas EndMarket.BR. A funcionalidade de chamados não é disparada nesses mercados.
Have no case dispatcher — caseUpload.enabledMarkets lists only EndMarket.BR. The cases feature is not fired in these markets.
No tienen dispatcher de caso — caseUpload.enabledMarkets lista solo EndMarket.BR. La funcionalidad de casos no se dispara en estos mercados.