DocumentaçãoDocumentationDocumentaciónOne Conecta
ÍndiceIndexÍndice
Baixar .mdDownload .mdBajar .md
Você está vendo esta documentação online. No topo você também pode baixar o PDF (mesmo conteúdo desta página, no idioma e modo atuais) e o Markdown (Funcional ou Técnica).You are viewing this documentation online. At the top you can also download the PDF (same content as this page, in the current language and mode) and the Markdown (Functional or Technical).Está viendo esta documentación en línea. Arriba también puede bajar el PDF (mismo contenido de esta página, en el idioma y modo actuales) y el Markdown (Funcional o Técnica).
Transação gRPC · DispatchergRPC transaction · DispatcherTransacción gRPC · Dispatcher

Cadastro de balconista (Conecta Você)Clerk upload (Conecta Você)Alta de dependiente (Conecta Você)

A transação de escrita que cadastra ou atualiza um balconista no programa Conecta Você, via o Dispatcher. O representante preenche os dados do balconista de um varejo e o app envia esse cadastro ao backend. É uma transação exclusiva do Brasil: o programa Conecta Você só existe no mercado brasileiro. The write transaction that registers or updates a clerk in the Conecta Você program, through the Dispatcher. The rep fills in a retail's clerk data and the app sends that record to the backend. It's a Brazil-only transaction: the Conecta Você program exists only in the Brazilian market. La transacción de escritura que registra o actualiza un dependiente en el programa Conecta Você, vía el Dispatcher. El representante completa los datos del dependiente de un punto de venta y la app envía ese registro al backend. Es una transacción exclusiva de Brasil: el programa Conecta Você solo existe en el mercado brasileño.

PúblicoAudiencePúblico
QA · Suporte · Produto · DevQA · Support · Product · DevQA · Soporte · Producto · Dev
CamadaLayerCapa
Escrita · DispatcherWrite · DispatcherEscritura · Dispatcher
RelacionadoRelatedRelacionado
AtualizadoUpdatedActualizado
17/08/20262026-08-17
Disponível emAvailable inDisponible en BR
01

O que é e quando aconteceWhat it is and when it happensQué es y cuándo ocurre

Conecta Você é o programa de relacionamento com os balconistas dos varejos. Quando o representante de vendas cadastra um balconista (ou atualiza os dados de um já cadastrado) na tela do Conecta Você, o app envia esse cadastro ao backend por esta transação. É o momento em que os dados do balconista — nome, contato, aniversário e o papel dele no programa — saem do dispositivo e passam a existir no sistema. Conecta Você is the relationship program for the retails' clerks. When the sales rep registers a clerk (or updates the data of one already registered) on the Conecta Você screen, the app sends that record to the backend through this transaction. It's the moment the clerk's data — name, contact, birthday and their role in the program — leaves the device and starts to exist in the system. Conecta Você es el programa de relacionamiento con los dependientes de los puntos de venta. Cuando el representante de ventas registra un dependiente (o actualiza los datos de uno ya registrado) en la pantalla de Conecta Você, la app envía ese registro al backend por esta transacción. Es el momento en que los datos del dependiente — nombre, contacto, cumpleaños y su rol en el programa — salen del dispositivo y pasan a existir en el sistema.

O balconista pode entrar no programa com dois papéis, escolhidos no cadastro:A clerk can join the program in two roles, chosen at registration:El dependiente puede entrar al programa con dos roles, elegidos en el alta:

AtendenteAttendantAtendiente

O balconista que atende no balcão do varejo — o papel padrão do programa.The clerk who works at the retail's counter — the program's default role.El dependiente que atiende en el mostrador del punto de venta — el rol estándar del programa.

GerenteManagerGerente

O gerente do varejo, quando entra no programa com um papel de maior responsabilidade.The retail's manager, when they join the program with a role of greater responsibility.El gerente del punto de venta, cuando entra al programa con un rol de mayor responsabilidad.

Cadastro e ediçãoRegister and editAlta y edición A mesma transação cobre o cadastro novo e a edição de um balconista existente. Para o rep, o gesto é o mesmo — preencher e salvar; o app apenas marca internamente se é uma criação ou uma edição. The same transaction covers a new registration and the edit of an existing clerk. For the rep, the gesture is the same — fill in and save; the app just internally flags whether it's a creation or an edit. La misma transacción cubre el alta nueva y la edición de un dependiente existente. Para el rep, el gesto es el mismo — completar y guardar; la app solo marca internamente si es una creación o una edición.

02

Fluxo de telas que disparaScreen flow that fires itFlujo de pantallas que lo dispara

A transação é o último passo do cadastro de um balconista. As telas do caminho pertencem à feature de Conecta Você; aqui só situamos onde o envio acontece:The transaction is the last step of registering a clerk. The screens along the way belong to the Conecta Você feature; here we only place where the send happens:La transacción es el último paso del alta de un dependiente. Las pantallas del camino pertenecen a la feature de Conecta Você; aquí solo situamos dónde ocurre el envío:

  1. Hub do Conecta VocêConecta Você hubHub de Conecta VocêA partir de um varejo, o rep abre o Conecta Você e vê os balconistas já cadastrados.From a retail, the rep opens Conecta Você and sees the clerks already registered.Desde un punto de venta, el rep abre Conecta Você y ve los dependientes ya registrados.
  2. Cadastrar / editar balconistaRegister / edit clerkAlta / editar dependientePreenche nome, CPF, telefone, e-mail, aniversário e escolhe o papel (atendente ou gerente).Fills in name, tax id, phone, e-mail, birthday and picks the role (attendant or manager).Completa nombre, RUT/CPF, teléfono, correo, cumpleaños y elige el rol (atendiente o gerente).
  3. Salvar → esta transaçãoSave → this transactionGuardar → esta transacciónAo tocar em salvar, o app dispara o Cadastro de balconista. É este toque que aciona a transação.Tapping save fires Clerk upload. This tap is what triggers the transaction.Al tocar guardar, la app dispara el Alta de dependiente. Este toque es lo que activa la transacción.

Cadastro + ativação em parRegistration + activation in pairAlta + activación en par Ao salvar, o app envia duas transações em sequência: primeiro este cadastro e, logo após, uma transação que define o status do balconista (ativo/inativo) — documentada em 09 · Status de balconista. Só depois das duas o balconista é gravado no dispositivo. On save, the app sends two transactions in sequence: first this registration and, right after, a transaction that sets the clerk's status (active/inactive) — documented in 09 · Clerk status. Only after both is the clerk saved on the device. Al guardar, la app envía dos transacciones en secuencia: primero este alta y, justo después, una transacción que define el estado del dependiente (activo/inactivo) — documentada en 09 · Estado de dependiente. Solo después de ambas se guarda el dependiente en el dispositivo.

03

Depois do envioAfter sendingDespués del envío

Confirmação ao repConfirmation to the repConfirmación al rep
Quando o backend aceita o cadastro (e o status logo em seguida), o balconista é gravado no dispositivo e passa a aparecer na lista do Conecta Você do varejo.When the backend accepts the registration (and the status right after), the clerk is saved on the device and starts to appear in the retail's Conecta Você list.Cuando el backend acepta el alta (y el estado justo después), el dependiente se guarda en el dispositivo y pasa a aparecer en la lista de Conecta Você del punto de venta.
Sem internetOfflineSin internet
O envio pode entrar em fila e ser reenviado quando a conexão volta — o rep não perde o cadastro. Um reenvio pode, em tese, duplicar; o sistema usa um identificador de transação para evitar isso.The send may be queued and retried when the connection returns — the rep doesn't lose the registration. A retry could, in theory, duplicate; the system uses a transaction id to avoid that.El envío puede quedar en cola y reintentarse cuando vuelve la conexión — el rep no pierde el alta. Un reenvío podría, en teoría, duplicar; el sistema usa un identificador de transacción para evitarlo.
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.
04

Visão técnicaTechnical overviewVisión técnica

Cadastro de balconista é a transação de saída que persiste um balconista do programa Conecta Você no backend. É disparada pelo hub do Conecta Você quando o representante de vendas cria ou edita um balconista. O DispatcherType é contactClerkUpdate; o serviceName é ContactConectaVoce. O payload é um objeto JSON plano de 12 chaves — não há arrays nem sub-estruturas. Clerk upload is the outbound transaction that persists a Conecta Você clerk in the backend. It's fired by the Conecta Você hub when the sales rep creates or edits a clerk. The DispatcherType is contactClerkUpdate; the serviceName is ContactConectaVoce. The payload is a flat JSON object of 12 keys — no arrays, no sub-structures. Alta de dependiente es la transacción de salida que persiste un dependiente del programa Conecta Você en el backend. Se dispara desde el hub de Conecta Você cuando el representante de ventas crea o edita un dependiente. El DispatcherType es contactClerkUpdate; el serviceName es ContactConectaVoce. El payload es un objeto JSON plano de 12 claves — sin arrays ni sub-estructuras.

Payload planoFlat payloadPayload plano

12 chaves de primeiro nível, todas escalares. O builder é pequeno e o dono único de toda a montagem wire.12 top-level keys, all scalar. The builder is small and the sole owner of the whole wire assembly.12 claves de primer nivel, todas escalares. El builder es pequeño y el dueño único de todo el armado wire.

Uma variante sóSingle variantUna sola variante

Não há variantes nem prefixo Promo_: sempre ContactConectaVoce. Criação vs edição é sinalizada por editMode.No variants and no Promo_ prefix: always ContactConectaVoce. Creation vs edit is signaled by editMode.Sin variantes ni prefijo Promo_: siempre ContactConectaVoce. Creación vs edición se señala por editMode.

RPC genéricoGeneric RPCRPC genérico

Passa pelo mesmo sendTransaction de todas as transações; o JSON vai no campo message e o serviceName é o discriminador.Goes through the same sendTransaction as all transactions; the JSON goes in the message field and serviceName is the discriminator.Pasa por el mismo sendTransaction de todas las transacciones; el JSON va en el campo message y el serviceName es el discriminador.

FontesSourcesFuentes BuildClerkConectaVoceUploadDispatcherPayloadUseCase + ClerkConectaVoceUploadDispatcherPayloadInput + DispatcherType + DispatcherConectaRep.proto. O input carrega entities cruas de domínio (CLAUDE.md §36); o build() constrói todo o wire. BuildClerkConectaVoceUploadDispatcherPayloadUseCase + ClerkConectaVoceUploadDispatcherPayloadInput + DispatcherType + DispatcherConectaRep.proto. The input carries raw domain entities (CLAUDE.md §36); build() constructs the entire wire. BuildClerkConectaVoceUploadDispatcherPayloadUseCase + ClerkConectaVoceUploadDispatcherPayloadInput + DispatcherType + DispatcherConectaRep.proto. El input lleva entities crudas de dominio (CLAUDE.md §36); build() construye todo el wire.

05

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.

sendTransactionunary
MétodoMethodMétodo

rpc sendTransaction(InboxTransactionRequest) returns (InboxTransactionReply)

path /mn.bat.conectarep.dispatcher.DispatcherConectaRepService/sendTransaction

Request · InboxTransactionRequest
endpoint
string · #1 · ""destination é none para esta transação""destination is none for this transaction""destination es none para esta transacción
serviceName
string · #2 · discriminador — sempre ContactConectaVoce (sem prefixo Promo_)discriminator — always ContactConectaVoce (no Promo_ prefix)discriminador — siempre ContactConectaVoce (sin prefijo Promo_)
dateReference
string · #3 · AAAA-MM-DD do envio (submittedAt)YYYY-MM-DD of the submission (submittedAt)AAAA-MM-DD del envío (submittedAt)
transactionReference
string · #4 · account.sfid (correlação)account.sfid (correlation)account.sfid (correlación)
username
string · #5
message
string · #6 · o payload JSON serializado (a tabela da seção 07)the JSON payload serialized (the table in section 07)el payload JSON serializado (la tabla de la sección 07)
manufacturer
string · #7 · dado do dispositivodevice datadato del dispositivo
model
string · #8 · dado do dispositivodevice datadato del dispositivo
deviceUuid
string · #9 · literal provisório hoje (ver Pendências)provisional literal today (see Pending)literal provisional hoy (ver Pendientes)
deviceVersion
string · #10
tid
int64 · #11 · id de transação para idempotência/replaytransaction id for idempotency/replayid de transacción para idempotencia/replay
Reply · InboxTransactionReply
status
int32 · #1 · status do ack (0 = sucesso)ack status (0 = success)status del ack (0 = éxito)
message
string · #2 · mensagem do backendbackend messagemensaje del backend
transactionId
int32 · #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 DispatcherGateway serializa payload em JSON para message, copia serviceName/dateReference/transactionReference, usa type.destination.value (aqui "") como endpoint, 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 DispatcherGateway serializes payload to JSON into message, copies serviceName/dateReference/transactionReference, uses type.destination.value (here "") as endpoint, 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 DispatcherGateway serializa payload a JSON en message, copia serviceName/dateReference/transactionReference, usa type.destination.value (aquí "") como endpoint, completa los campos del dispositivo y el bearer token de auth, y llama al RPC.

Para esta transação, resendMayDuplicate == true: um reenvio (ex.: recuperação de fila offline) pode duplicar o cadastro no backend; a idempotência via tid é o que mitiga isso.For this transaction, resendMayDuplicate == true: a resend (e.g. offline-queue recovery) may duplicate the registration on the backend; idempotency via tid is what mitigates it.Para esta transacción, resendMayDuplicate == true: un reenvío (p. ej. recuperación de cola offline) puede duplicar el alta en el backend; la idempotencia vía tid es lo que lo mitiga.

06

Como é disparadoHow it's firedCómo se dispara

A transação é orquestrada pelo StaffOrchestrator (remote-first, §36). O orchestrator apenas reúne entities cruas e o relógio; o builder é o dono único de todo rename, strip e formatação de data. A cascata:The transaction is orchestrated by StaffOrchestrator (remote-first, §36). The orchestrator only gathers raw entities and the clock; the builder is the sole owner of every rename, strip and date formatting. The cascade:La transacción se orquesta desde el StaffOrchestrator (remote-first, §36). El orchestrator solo reúne entities crudas y el reloj; el builder es el dueño único de todo rename, strip y formateo de fecha. La cascada:

  • Conecta Você hubnotifier
    • saveClerk()StaffOrchestrator
      • reúne entities cruas + relógiogathers raw entities + clockreúne entities crudas + relojClerkConectaVoceUploadDispatcherPayloadInput
        • build()BuildClerkConectaVoceUploadDispatcherPayloadUseCasemonta o wireassembles the wirearma el wire
          • devolvereturnsdevuelveDispatcherEnvelope
            • SubmitClerkConectaVoceUploadUseCaseDispatcherOrchestrator
              • serializa + authserialize + authserializa + authDispatcherGateway
                • sendTransactionBackendgRPC

Duas transações, uma gravaçãoTwo transactions, one saveDos transacciones, un guardado Dentro de saveClerk, o orchestrator dispara este upload e, só se o ack for sucesso (ack.status == 0), dispara em seguida a transação de status (09) com o mesmo submittedAt. Depois das duas, grava o balconista localmente com o novo status. Inside saveClerk, the orchestrator fires this upload and, only if the ack is a success (ack.status == 0), then fires the status (09) transaction with the same submittedAt. After both, it saves the clerk locally with the new status. Dentro de saveClerk, el orchestrator dispara este upload y, solo si el ack es éxito (ack.status == 0), dispara en seguida la transacción de estado (09) con el mismo submittedAt. Después de ambas, guarda el dependiente localmente con el nuevo status.

O input (entities cruas)The input (raw entities)El input (entities crudas)

ClerkConectaVoceUploadDispatcherPayloadInput (Freezed). Carrega o dado como existe no domínio; nada de formato wire. O relógio chega como submittedAt: DateTime (via DateTimeUtils.now()).ClerkConectaVoceUploadDispatcherPayloadInput (Freezed). Carries data as it exists in the domain; no wire shaping. The clock arrives as submittedAt: DateTime (via DateTimeUtils.now()).ClerkConectaVoceUploadDispatcherPayloadInput (Freezed). Lleva el dato como existe en el dominio; nada de formato wire. El reloj llega como submittedAt: DateTime (vía DateTimeUtils.now()).

CampoFieldCampoTipoTypeTipoPapelRoleRol
clerkClerkEntityo balconista cru — nome, taxId (com formatação), telefone, e-mail, birthday, programLayerthe raw clerk — name, taxId (formatted), phone, e-mail, birthday, programLayerel dependiente crudo — nombre, taxId (con formato), teléfono, correo, birthday, programLayer
accountAccountDataEntityo varejo pai — customerCode, name, sfidthe parent retail — customerCode, name, sfidel punto de venta padre — customerCode, name, sfid
isEditbooleditMode. false em cadastro novo, true em ediçãoeditMode. false on new registration, true on editeditMode. false en alta nueva, true en edición
submittedAtDateTimerelógio (DateTimeUtils.now()) → dateReference do envelopeclock (DateTimeUtils.now()) → envelope dateReferencereloj (DateTimeUtils.now()) → dateReference del envelope
07

Payload (message)

O JSON serializado no campo message do request. A tabela tem 4 colunasCampo JSON · Tipo · Origem do Dado · Regra — e lista todas as 12 chaves que o build() emite (objeto plano, sem arrays). Campo, Tipo e Origem são código cru; só a Regra é prosa. Um exemplo completo (cadastro/BR) está em transaction_example.json, ao lado deste doc.The JSON serialized into the request's message field. The table has 4 columnsJSON field · Type · Data source · Rule — and lists all 12 keys that build() emits (flat object, no arrays). Field, Type and Source are raw code; only Rule is prose. A full example (registration/BR) sits in transaction_example.json, next to this doc.El JSON serializado en el campo message del request. La tabla tiene 4 columnasCampo JSON · Tipo · Origen del Dato · Regla — y lista todas las 12 claves que build() emite (objeto plano, sin arrays). Campo, Tipo y Origen son código crudo; solo la Regla es prosa. Un ejemplo completo (alta/BR) está en transaction_example.json, junto a este doc.

Campo JSONTipoTypeTipoOrigem do DadoData sourceOrigen del DatoRegraRuleRegla
sapParentstringaccount.customerCodecódigo SAP do varejo paiparent retail's SAP codecódigo SAP del punto de venta padre
parentNamestringaccount.namenome do varejo paiparent retail's namenombre del punto de venta padre
sapNamestringclerk.namenome do balconistaclerk's namenombre del dependiente
rolestringprogramLayer.wireRole"Conecta Voce - Atendente" ou "Conecta Voce - Gerente" (rótulo wire literal, ver Regras)"Conecta Voce - Atendente" or "Conecta Voce - Gerente" (literal wire label, see Rules)"Conecta Voce - Atendente" o "Conecta Voce - Gerente" (etiqueta wire literal, ver Reglas)
emailstringclerk.email ?? """" quando o balconista não tem e-mail"" when the clerk has no e-mail"" cuando el dependiente no tiene correo
celNumberstringPhoneUtils.digitsOnly(clerk.phone)telefone só com dígitos (remove máscara); "" se sem telefonephone digits only (mask stripped); "" if no phoneteléfono solo dígitos (sin máscara); "" si no hay teléfono
birthdaystringclerk.birthdayformato yyyy-MM-dd (DateFormatType.isoDate); "" quando sem datayyyy-MM-dd format (DateFormatType.isoDate); "" when no dateformato yyyy-MM-dd (DateFormatType.isoDate); "" cuando no hay fecha
programLayerCodestringprogramLayer.programLayerCode"BATCONVOCE23ATEND" (atendente) ou "BATCONVOCE23GER" (gerente)"BATCONVOCE23ATEND" (attendant) or "BATCONVOCE23GER" (manager)"BATCONVOCE23ATEND" (atendiente) o "BATCONVOCE23GER" (gerente)
userstring_strippedTaxId(clerk.taxId)taxId sem . nem -; mesmo valor de taxId/accountCodetaxId without . or -; same value as taxId/accountCodetaxId sin . ni -; mismo valor que taxId/accountCode
taxIdstring_strippedTaxId(clerk.taxId)CPF do balconista sem pontuação (replaceAll([.\-], "")); "" se nuloclerk's tax id without punctuation (replaceAll([.\-], "")); "" if nulltax id del dependiente sin puntuación (replaceAll([.\-], "")); "" si nulo
accountCodestring_strippedTaxId(clerk.taxId)mesmo valor de taxId (redundância do contrato wire)same value as taxId (wire-contract redundancy)mismo valor que taxId (redundancia del contrato wire)
editModeboolinput.isEdittrue em edição, false em cadastro novotrue on edit, false on new registrationtrue en edición, false en alta nueva
08

Regras de negócioBusiness rulesReglas de negocio

  • Papel do programaProgram roleRol del programa role · programLayerCode

    Dois campos derivam do mesmo clerk.programLayer (ClerkProgramLayer): role (rótulo) e programLayerCode (código do programa). São valores literais do contrato wire, em português, não traduções:Two fields derive from the same clerk.programLayer (ClerkProgramLayer): role (label) and programLayerCode (program code). They are literal wire-contract values, in Portuguese, not translations:Dos campos derivan del mismo clerk.programLayer (ClerkProgramLayer): role (etiqueta) y programLayerCode (código del programa). Son valores literales del contrato wire, en portugués, no traducciones:

    ClerkProgramLayerroleprogramLayerCode
    attendantConecta Voce - AtendenteBATCONVOCE23ATEND
    managerConecta Voce - GerenteBATCONVOCE23GER
    unknown""""
  • CPF / taxIdTax idTax id user · taxId · accountCode
    • _strippedTaxId remove . e - do clerk.taxId (replaceAll(RegExp("[.\\-]"), "")); null vira ""._strippedTaxId removes . and - from clerk.taxId (replaceAll(RegExp("[.\\-]"), "")); null becomes ""._strippedTaxId elimina . y - de clerk.taxId (replaceAll(RegExp("[.\\-]"), "")); null pasa a "".
    • O mesmo valor limpo alimenta user, taxId e accountCode — três chaves com conteúdo idêntico por exigência do contrato wire.The same cleaned value feeds user, taxId and accountCode — three keys with identical content per the wire contract.El mismo valor limpio alimenta user, taxId y accountCode — tres claves con contenido idéntico por exigencia del contrato wire.
  • Contato e dataContact & dateContacto y fecha celNumber · email · birthday
    • celNumber: PhoneUtils.digitsOnly tira toda pontuação/máscara, deixando só dígitos; null"".celNumber: PhoneUtils.digitsOnly strips all punctuation/mask, leaving only digits; null"".celNumber: PhoneUtils.digitsOnly quita toda puntuación/máscara, dejando solo dígitos; null"".
    • email: passa cru; null"".email: passed raw; null"".email: pasa crudo; null"".
    • birthday: DateTimeUtils.formatDate com DateFormatType.isoDate (yyyy-MM-dd); data nula produz "" (o formatter retorna string vazia).birthday: DateTimeUtils.formatDate with DateFormatType.isoDate (yyyy-MM-dd); a null date produces "" (the formatter returns an empty string).birthday: DateTimeUtils.formatDate con DateFormatType.isoDate (yyyy-MM-dd); una fecha nula produce "" (el formatter retorna string vacía).
  • serviceName · envelopeenvelopeenvelope ContactConectaVoce · dateReference
    • serviceName: type.resolveServiceName(hasPromotion: false) → sempre ContactConectaVoce. Não há prefixo Promo_ (a transação nunca carrega promoção).serviceName: type.resolveServiceName(hasPromotion: false) → always ContactConectaVoce. No Promo_ prefix (the transaction never carries a promotion).serviceName: type.resolveServiceName(hasPromotion: false) → siempre ContactConectaVoce. Sin prefijo Promo_ (la transacción nunca lleva promoción).
    • dateReference = DateTimeUtils.formatDate(input.submittedAt) (padrão yyyy-MM-dd). transactionReference = account.sfid. account do envelope = DispatchAccountEntity(sfid, sapCode: customerCode, name).dateReference = DateTimeUtils.formatDate(input.submittedAt) (default yyyy-MM-dd). transactionReference = account.sfid. Envelope account = DispatchAccountEntity(sfid, sapCode: customerCode, name).dateReference = DateTimeUtils.formatDate(input.submittedAt) (por defecto yyyy-MM-dd). transactionReference = account.sfid. account del envelope = DispatchAccountEntity(sfid, sapCode: customerCode, name).
    • Remote-first (§36): o balconista só é gravado no dispositivo depois de este upload e a transação de status retornarem sucesso.Remote-first (§36): the clerk is saved on the device only after this upload and the status transaction both return success.Remote-first (§36): el dependiente se guarda en el dispositivo solo después de que este upload y la transacción de estado devuelvan éxito.
09

Pendências / roadmapPending / roadmapPendientes / roadmap

Quirks e limites do contrato atual, documentados fiel ao estado do código (nunca descritos como se já existissem de outra forma):Quirks and limits of the current contract, documented faithfully to the code state (never described as if they already worked otherwise):Quirks y límites del contrato actual, documentados fiel al estado del código (nunca descritos como si ya funcionaran de otra forma):

Quirks / pendenteQuirks / pendingQuirks / pendiente

  • Sem campo de status no payload de upload: ativo/inativo não vai aqui — é definido pela transação de status (09), disparada logo após este upload dentro do mesmo saveClerk.No status field in the upload payload: active/inactive is not here — it's set by the status transaction (09), fired right after this upload within the same saveClerk.Sin campo de estado en el payload de upload: activo/inactivo no va aquí — lo define la transacción de estado (09), disparada justo después de este upload dentro del mismo saveClerk.
  • user, taxId e accountCode carregam o mesmo CPF limpo — redundância mantida por exigência do contrato wire, não simplificável no app.user, taxId and accountCode carry the same cleaned tax id — a redundancy kept per the wire contract, not simplifiable in the app.user, taxId y accountCode llevan el mismo tax id limpio — redundancia mantenida por exigencia del contrato wire, no simplificable en la app.
  • Não há ação de exclusão nesta transação — só criação e edição (editMode). A inativação de um balconista é feita pela transação de status (09).There's no delete action in this transaction — only creation and edit (editMode). Deactivating a clerk is done through the status transaction (09).No hay acción de eliminación en esta transacción — solo creación y edición (editMode). La desactivación de un dependiente se hace por la transacción de estado (09).
  • role e programLayerCode ficam "" se programLayer == unknown — o app não gate esse caso no builder; depende de a UI nunca salvar um balconista sem papel.role and programLayerCode stay "" if programLayer == unknown — the builder doesn't gate this case; it relies on the UI never saving a clerk without a role.role y programLayerCode quedan "" si programLayer == unknown — el builder no controla este caso; depende de que la UI nunca guarde un dependiente sin rol.
  • Transporte: deviceUuid vai como literal provisório no gateway (pendência conhecida do Dispatcher).Transport: deviceUuid ships as a provisional literal in the gateway (known Dispatcher pending item).Transporte: deviceUuid va como literal provisional en el gateway (pendiente conocido del Dispatcher).

Transação irmãSister transactionTransacción hermana O status do balconista (ativo/inativo) é enviado pela transação ContactUpdateStatus — documentada em 09 · Status de balconista (doc separado), sempre disparada em par com este upload. The clerk's status (active/inactive) is sent by the ContactUpdateStatus transaction — documented in 09 · Clerk status (separate doc), always fired in pair with this upload. El estado del dependiente (activo/inactivo) lo envía la transacción ContactUpdateStatus — documentada en 09 · Estado de dependiente (doc separado), siempre disparada en par con este upload.

MercadosMarketsMercados

A disponibilidade da transação vem do DispatcherType.contactClerkUpdate.enabledMarkets, que lista apenas BR. O programa Conecta Você é exclusivo do Brasil; nenhum outro mercado dispara esta transação.Transaction availability comes from DispatcherType.contactClerkUpdate.enabledMarkets, which lists only BR. The Conecta Você program is Brazil-exclusive; no other market fires this transaction.La disponibilidad de la transacción viene de DispatcherType.contactClerkUpdate.enabledMarkets, que lista solo BR. El programa Conecta Você es exclusivo de Brasil; ningún otro mercado dispara esta transacción.

BRx CL ZA AR PY PE
disponívelavailabledisponible presente, desligadopresent, offpresente, apagado ausenteabsentausente
BR

Só no BrasilBrazil onlySolo Brasil Conecta Você é um programa brasileiro. Os rótulos wire (Conecta Voce - Atendente, Conecta Voce - Gerente) e os códigos (BATCONVOCE23ATEND, BATCONVOCE23GER) são específicos do contrato brasileiro. Conecta Você is a Brazilian program. The wire labels (Conecta Voce - Atendente, Conecta Voce - Gerente) and codes (BATCONVOCE23ATEND, BATCONVOCE23GER) are specific to the Brazilian contract. Conecta Você es un programa brasileño. Las etiquetas wire (Conecta Voce - Atendente, Conecta Voce - Gerente) y los códigos (BATCONVOCE23ATEND, BATCONVOCE23GER) son específicos del contrato brasileño.

CL · ZA · AR · PY · PE Nenhum outro mercado lista contactClerkUpdate em enabledMarkets. A tela do Conecta Você e esta transação não são disparadas fora do Brasil. No other market lists contactClerkUpdate in enabledMarkets. The Conecta Você screen and this transaction are not fired outside Brazil. Ningún otro mercado lista contactClerkUpdate en enabledMarkets. La pantalla de Conecta Você y esta transacción no se disparan fuera de Brasil.