Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Produto:

Solucoes_totvs

Solucoes_totvs_cross
SolucaoCross

Solucoes_totvs_parceiros
SolucaoParceiros

Solucoes_totvs_parceirosexptotvs
SolucaoParcsExpsTOTVSTOTVS DMS

Linha de Produto:

Linhas_totvs
LinhaLinha Protheus

Segmento:

Segmentos_totvs
Segmento Varejo

Módulo:

Modulos_cross_segmentos

Modulos_framework

Modulos_totvs_construcao

Modulos_totvs_juridico

Modulos_totvs_logistica

Modulos_totvs_manufatura

Modulos_totvs_rh

Modulos_totvs_saude

Modulos_totvs_prestadores_de_servicos

Totvs DMS (Linha Protheus) - Veículos (SIGAVEI)

Função:Integração SCRM (VEIA120)
País:Brasil
Ticket:Não há/Não se aplica.
Requisito/Story/Issue:DVARMIL-10421

02. SITUAÇÃO/REQUISITO

Após levantamentos realizados com base nos processos e regras de negócio da montadora Scania, identificou-se a necessidade de criar uma rotina que gere arquivos contendo envie informações de clientes e veículos para integração com o SCRM da própria montadora, facilitando a integração e atualização das informações dos dados entre o sistema Protheus DMS e o SCRM.

03. SOLUÇÃO

A solução implementada consistiu na criação da rotina Integração SCRM (VEIA120), que identifica, prepara e envia os dados de clientes e veículos do Protheus DMS ao SCRM, respeitando as regras definidas na configuração.

Para que a rotina funcione corretamente, é necessário garantir algumas condições configurações que asseguram a leitura adequada do arquivo PRI RM.TXT, o mapeamento das peças previamente cadastradas e o correto tratamento dos dados no sistemaintegração com o SCRM. São elas:

    • As peças existentes  no arquivo PRI RM.TXT devem ter sido previamente cadastradas na rotina de Peças (MATA010) ou pela rotina Importação Glass (OFIA538).
    • É necessário incluir manualmente a rotina Atualização de Preço Garantia e Contrato (OFIA537) no menu do Protheus, permitindo assim o acesso à funcionalidade.
    • Deve-se possuir um arquivo PRI RM.TXT válido contendo as informações e preços das peças enviados pela montadora Scania, que será utilizado como base para execução da rotina.
    • Configurar corretamente o parâmetro "MV_ARQPROD" que é responsável por determinar se os dados dos indicadores de produto serão considerados pela tabela "Descrição Genérica do Produto" (SB1) ou pela tabela "Indicadores de Produtos" (SBZ).

Totvs custom tabs box
tabsGatilhos (Triggers), Configuração SCRM
idsconfig1,config2
Totvs custom tabs box items
defaultyes
referenciaconfig1

É necessário cadastrar previamente os gatilhos (triggers) para que a rotina identifique diariamente quais registros foram alterados.

O cadastro dos gatilhos deve ser feito no Configurador (SIGACFG), por meio da rotina Embedded Audit Trail (CFGA710), acessando o caminho: SIGACFG > Ambiente > Embedded Audit Trail > Aplicador.

  • Na seção Grupo de Empresas, deve-se configurar a(s) empresa(s) em que os gatilhos serão aplicados.
  • Na seção Tabela, é necessário configurar as seguintes tabelas:
    • Tabela SA1 - Clientes
    • Tabela SF2 - Cabeçalho das NF de Saída
    • Tabela VCF - Dados Adicionais Clientes Cev
    • Tabela VO1 - Ordem de Serviço
    • Tabela VS1 - Orçamento
    • Tabela VV1 - Cadastro de Veículos
  • Na seção Campos, devem ser configurados os campos de cada tabela que acionarão os gatilhos quando alguma operação (como inclusão, alteração ou exclusão) for realizada.

Observação: Após a configuração dos gatilhos, é necessário executar as operações nos campos por meio das rotinas correspondentes às tabelas para que os gatilhos sejam efetivamente ativados.

totvs-custom-tabs
Totvs custom tabs box
tabsPasso a passo para utilização: Menu, Passo a passo para utilização: Schedule, Atualização de Dicionário/Menu
idspasso1,passo2,passo3
  • Acesse o Módulo 11 (Veículos).
  • Acesse o menu Atualizações → SCRM → Integração SCRM (VEIA120).
  • Preencha os parâmetros: 
    • No parâmetro Arquivo para Importação? que possui preenchimento obrigatório, ao sair do campo, será exibida uma tela mostrando o servidor (pasta protheus_data) e seus diretórios. Selecione o arquivo PRI RM.TXT que será processado pela rotina.
    • No parâmetro Grupo a considerar? que possui preenchimento obrigatório, será necessário preencher o(s) grupo(s) vinculado(s) às peças já cadastradas no Protheus e existentes na rotina Grupos de Peças (MATA035).
    • No parâmetro Dest. P.Dealer_Contrat?, ao clicar no ícone da lupa, será exibida uma listagem onde deve ser selecionado o preço de venda desejado.
    • No parâmetro Dest. P.Dealer_Normal?, ao clicar no ícone da lupa, será exibida uma listagem onde deve ser selecionado o preço de venda desejado.
    • No parâmetro Dest. P.Balcão_Contrat?,  ao clicar no ícone da lupa, será exibida uma listagem onde deve ser selecionado o preço de venda desejado.
    • No parâmetro Dest. P.Balcão_Normal?,  ao clicar no ícone da lupa, será exibida uma listagem onde deve ser selecionado o preço de venda desejado.

Atualização dos preços: A listagem apresentada nos parâmetros acima consiste nos seguintes campos:

      • Preco Venda2 (B5_PRV2)
      • Preco Venda3 (B5_PRV3)
      • Preco Venda4 (B5_PRV4)
      • Preco Venda5 (B5_PRV5)
      • Preco Venda6 (B5_PRV6)
      • Preco Venda7 (B5_PRV7)

Esses campos estão presentes na aba Vendas, seção Dados Adicionais do Produto, rotina Peças (MATA010).

A atualização ocorrerá da seguinte forma: o campo referente ao preço selecionado no parâmetro será atualizado com o valor correspondente existente no arquivo PRI RM.TXT.

Exemplo: Se no parâmetro Dest. P.Dealer_Contrat? for selecionado o preço "B5_PRV4", o campo Preco Venda4 da rotina Peças (MATA010) será atualizado com o valor da coluna "P.Dealer_Contrato" do arquivo.

Observação: Não é permitido utilizar o mesmo preço de venda em parâmetros diferentes, ou seja, caso um preço de venda já tenha sido selecionado em um parâmetro, se selecionado o mesmo preço em um segundo parâmetro ao clicar no botão OK para execução da rotina ocorrerá a validação dos parâmetros e será exibida uma mensagem em tela abortando a operação.

    • No parâmetro Atualiza Qtd. por Embalagem? que possui preenchimento obrigatório, caso seja selecionada a opção 1 - Sim, a quantidade de peças por embalagem será atualizada de acordo com a configuração realizada anteriormente para o parâmetro "MV_ARQPROD". Caso seja selecionada a opção 2 - Não, não haverá atualização da quantidade de peças por embalagem.  
  • No parâmetro Ação após processamento, selecione uma das opções abaixo:

    • Nenhuma Ação: o arquivo PRI RM.TXT permanecerá no diretório original, sem ser movido, nem apagado após o processamento.

    • Mover Arquivo: o parâmetro Mover Para? será habilitado, permitindo selecionar o diretório de destino dentro do servidor. Ao final do processamento, o arquivo será movido automaticamente do diretório original para o diretório informado.

    • Apagar Arquivo: ao término do processamento, o arquivo PRI RM.TXT será excluído do diretório original.

  • Após preencher todos os parâmetros obrigatórios, clique no botão “OK”.

    • A rotina processará o arquivo PRI RM.TXT e, após a atualização de preço e da quantidade por embalagem de cada peça, serão executadas ações personalizadas definidas através do ponto de entrada criado para execução após o processamento de cada item.

    • Ao final do processamento, quando o arquivo for concluído com sucesso, serão executadas ações personalizadas definidas através do ponto de entrada destinado à conclusão da rotina, e o sistema aplicará a ação de pós-processamento selecionada (manter, mover ou apagar o arquivo).

totvs-custom-tabs-box-items
defaultyesno
referenciaconfig2passo1
Totvs custom tabs box items
defaultno
referenciapasso2



Image Added


Totvs custom tabs box
tabsEstrutura arquivo diário clientes, Estrutura arquivo diário veículos, Estrutura arquivo carga inicial clientes, Estrutura carga inicial veículos
idsdoc1,doc2,doc3,doc4










Totvs custom tabs box
tabsPasso a passo para utilização: Menu, Passo a passo para utilização: Schedule, Atualização de Dicionário/Menu
idspasso1,passo2,passo3
Totvs custom tabs box items
defaultyes
referenciapasso1
  • Acesse o Módulo 11 (Veículos).
  • Acesse o menu Atualizações → SCRM → Integração SCRM (VEIA120)
  • Nas mensagens apresentadas durante a execução da rotina referentes aos pontos de entrada, clicar no botão Fechar.
  • Será gerado arquivo de diário clientes e diário veículos
  • A rotina processará o arquivo PRI RM.TXT e, após a atualização de preço e da quantidade por embalagem de cada peça, serão executadas ações personalizadas definidas através do ponto de entrada criado para execução após o processamento de cada item.
  • Ao final do processamento, quando o arquivo for concluído com sucesso, serão executadas ações personalizadas definidas através do ponto de entrada destinado à conclusão da rotina, e o sistema aplicará a ação de pós-processamento selecionada (manter, mover ou apagar o arquivo).

Multimedia
nameIntegração SCRM.mp4
width1400
autostarttrue
height700

Totvs custom tabs box items
defaultno
referenciapasso2
  • Acesse o Configurador (SIGACFG).
  • Acesse o menu Atualizações → SCRM → Integração SCRM (VEIA120).
  • Será gerado arquivo de carga inicial clientes e carga inicial veículos


Caso na rotina Configurações Integrações Scania (OFIA541), na aba Integração SCRM, o campo Integração Ativa? esteja como Sim, e o campo Gerar Arquivo espelho do XML integrado ao SCRM? também esteja salvo como Sim, ao executar a rotina Integração SCRM (VEIA120) serão gerados arquivos de acordo com a opção utilizada (Carga Inicial ou Diário).


Bloco de código
languagexml
themeRDark
firstline1
titleModelo de arquivo diário clientes
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://xmlns.scania.com/account/schema/scrmmsgs/v1" xmlns:v11="http://xmlns.scania.com/account/schema/account/v1">
	<soapenv:Header>
		<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
			<wsse:UsernameToken wsu:Id="UsernameToken-1">
				<wsse:Username>USUARIO</wsse:Username>
				<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">SENHA</wsse:Password>
			</wsse:UsernameToken>
		</wsse:Security>
	</soapenv:Header>
	<soapenv:Body>
		<v1:UpdateAccountRequest>
			<v1:Account>
				<v11:accountnumber>01020304056</v11:accountnumber>
				<v11:name>TESTE NOME DO TESTE</v11:name>
				<v11:global_tradename>TESTE NOME</v11:global_tradename>
				<v11:global_vatnumber>ISENTO</v11:global_vatnumber>
				<v11:emailaddress1>[email protected]</v11:emailaddress1>
				<v11:address1_line1>RUA TESTES, 123</v11:address1_line1>
				<v11:global_address1countryid>01058</v11:global_address1countryid>
				<v11:global_address1countyid>SP</v11:global_address1countyid>
				<v11:address1_postalcode>15000123</v11:address1_postalcode>
				<v11:address1_city>CIDADE</v11:address1_city>
				<v11:address1_county>ESTADO</v11:address1_county>
				<v11:address1_country>PAIS</v11:address1_country>
				<v11:address2_line1>RUA TESTES, 123</v11:address2_line1>
				<v11:global_address2countyid>SP</v11:global_address2countyid>
				<v11:address2_postalcode>15000123</v11:address2_postalcode>
				<v11:address2_city>CIDADE</v11:address2_city>
				<v11:address2_county>ESTADO</v11:address2_county>
				<v11:address2_country>PAIS</v11:address2_country>
				<v11:creditonhold>1 - Liberado ate o Limite</v11:creditonhold>
				<v11:global_latestpurchasedateparts>2025-05-14</v11:global_latestpurchasedateparts>
				<v11:global_latestpurchasedateworkshop>2025-07-11</v11:global_latestpurchasedateworkshop>
				<v11:global_countrycode>BR</v11:global_countrycode>
				<v11:global_accounttype>1</v11:global_accounttype>
				<v11:global_sourcestatus>Ativo</v11:global_sourcestatus>
				<v11:dealer/>
				<v11:persontype>1</v11:persontype>
				<v11:relationtype>3</v11:relationtype>
				<v11:originsystem>Protheus</v11:originsystem>
				<v11:cws>Nao</v11:cws>
			</v1:Account>
		</v1:UpdateAccountRequest>
	</soapenv:Body>
</soapenv:Envelope>
  • Acesse o Módulo 11 (Veículos).
  • Acesse o menu Atualizações → SCRM → Integração SCRM (VEIA120).



    Totvs custom tabs box items
    defaultno
    referenciapasso3
    • No Configurador (SIGACFG), acesse Ambientes/Cadastros/Menu (CFGX013) e informe as novas opções de menu do módulo de Oficina (SIGAOFI) conforme instruções a seguir:


    Menu

    Atualizações

    Submenu

    SCRM

    Nome da Rotina

    Integração SCRM

    Programa

    VEIA120

    Módulo

    Veículos (SIGAVEI)

    Tipo

    Função Protheus


    Criação de Tabela no arquivo SX2 – Tabelas:


    Chave

    Nome

    Modo

    Único

    PYME

    VEFSCRM Scania - ClientesCVEF_FILIAL+VEF_CODIGO S
    VEVSCRM SCANIA - VeiculosCVEV_FILIAL+VEV_CODIGOS


    Criação de Campo no arquivo SX3 – Campos:


    • Tabela VEF - SCRM Scania - Clientes:


    Campo

    VEF_FILIAL

    VEF_CODIGO

    VEF_TPEXEC

    VEF_DTEXEC

    TipoCaractereCaractereCaractereData
    Grupo de Campos033


    Ordem01020304
    Tamanho2818
    Decimal0000
    Formato@!@!@!
    Contexto1 - Real1 - Real1 - Real1 - Real
    Propriedade2 - Visualizar2 - Visualizar2 - Visualizar2 - Visualizar
    TítuloFilialCod. Seq.Tp.ExecuçãoDt.Execução
    DescriçãoFilialCódigo SequencialTipo ExecuçãoData Execução
    Val. Sistema

    Pertence("12 ")
    Opções

    1=Carga Inicial;2=Diario
    Inic. Padrão
    GetSXENum("VEF","VEF_CODIGO",,1)"1"dDataBase
    Inic. Browse



    Cons. Padrão



    Nível1111
    UsadoNãoSimSimSim
    ObrigatórioNãoSimNãoNão
    BrowseNãoSimSimSim
    When



    Pasta



    HelpCódigo que identifica a filial da empresa usuária do sistema.Identificador numérico gerado automaticamente pelo sistema.

    Campo no qual apresenta o Tipo de Execução, onde:

    1 - Carga Inicial

    2 - Diário

    Campo de exibição que apresenta a data em que o processo foi realizado, permitindo rastreabilidade e conferência das informações.

    Campo

    VEF_HREXEC

    VEF_CODCLI

    VEF_LOJCLI

    TipoCaractereCaractereCaractere
    Grupo de Campos
    001002
    Ordem050607
    Tamanho462
    Decimal000
    Formato@!@!@!
    Contexto1 - Real1 - Real1 - Real
    Propriedade2 - Visualizar2 - Visualizar2 - Visualizar
    TítuloHr.ExecuçãoCód. ClienteLoja Cliente
    DescriçãoHora ExecuçãoCódigo do ClienteLoja do Cliente
    Val. Sistema


    Opções


    Inic. Padrão


    Inic. Browse


    Cons. Padrão
    SA1
    Nível111
    UsadoSimSim
    ObrigatórioNãoNão
    BrowseSimSimSim
    When


    Pasta


    Help

    Campo de exibição que apresenta a hora em que o processo foi realizado, permitindo rastreabilidade e conferência das informações.

    Número único que diferencia cada cliente dentro da empresa. A identificação completa é composta pelo código do cliente e o código da loja.

    Número que diferencia cada loja do cliente, utilizado para organizar e controlar as operações.

    Campo

    VEF_DEALER

    VEF_STATUS

    VEF_ARQUIV

    TipoCaractereCaractereCaractere
    Grupo de Campos


    Ordem080910
    Tamanho6150
    Decimal000
    Formato@!@!@!
    Contexto1 - Real1 - Real1 - Real
    Propriedade2 - Visualizar2 - Visualizar2 - Visualizar
    TítuloCod. DealerStatusArquivo
    DescriçãoCódigo do DealerStatusArquivo Gerado
    Val. Sistema
    Pertence("12 ")
    Opções
    1=Gerado apenas Clientes;2=Gerado Clientes e Veiculos
    Inic. Padrão
    "1"
    Inic. Browse


    Cons. Padrão


    Nível111
    UsadoSimSimSim
    ObrigatórioNãoNãoNão
    BrowseSimSimSim
    When


    Pasta


    Help

    Identifica a concessionária ou revendedor autorizado responsável pela operação.

    Campo no qual apresenta o Status da operação, onde:

    1 = Gerado apenas Clientes

    2 = Gerado Clientes e Veículos

    Exibe o nome do arquivo que foi produzido ao final da execução do processo, permitindo identificar o resultado da operação e servir como referência para conferência, auditoria e acompanhamento das etapas realizadas.


    Criação de Campo no arquivo SX3 – Campos:


    • Tabela VEV - SCRM SCANIA - Veiculos:


    Campo

    VEV_FILIALVEV_CODIGOVEV_CODVEF
    TipoCaractereCaractereCaractere
    Grupo de Campos033

    Ordem010203
    Tamanho288
    Decimal000
    Formato@!@!@!
    Contexto1 - Real1 - Real1 - Real
    Propriedade2 - Visualizar2 - Visualizar2 - Visualizar
    TítuloFilialCod. Seq.Código VEF
    DescriçãoFilialCódigo SequencialCódigo VEF
    Val. Sistema


    Opções


    Inic. Padrão
    GetSXENum("VEV","VEV_CODIGO")
    Inic. Browse


    Cons. Padrão


    Nível111
    UsadoNãoSimSim
    ObrigatórioNãoSimNão
    BrowseNãoSimSim
    When


    Pasta


    Help

    Código que identifica a filial da empresa usuária do sistema.

    Identificador numérico gerado automaticamente pelo sistema.

    Número único que individualiza o registro VEF, utilizado para rastreabilidade e conferência das informações.

    Campo

    VEV_CHASSIVEV_ARQUIV
    TipoCaractereCaractere
    Grupo de Campos

    Ordem0405
    Tamanho2550
    Decimal00
    Formato@!@!
    Contexto1 - Real1 - Real
    Propriedade2 - Visualizar2 - Visualizar
    TítuloChassiArquivo
    DescriçãoNúmero do ChassiArquivo Gerado
    Val. Sistema

    Opções

    Inic. Padrão

    Inic. Browse

    Cons. Padrão

    Nível11
    UsadoSimSim
    ObrigatórioNãoNão
    BrowseSimSim
    When

    Pasta

    Help

    Número de identificação do veículo, utilizado para rastreabilidade e conferência das informações.

    Exibe o nome do arquivo que foi produzido ao final da execução do processo, permitindo identificar o resultado da operação e servir como referência para conferência, auditoria e acompanhamento das etapas realizadas.


    Criação de Campo no arquivo SX3 – Campos:


    • Tabela VCF - Dados Adicionais Clientes Cev:


    Campo

    VCF_SCRMID

    TipoCaractere
    Grupo de Campos
    OrdemA9
    Tamanho20
    Decimal0
    Formato@!
    Contexto1 - Real
    Propriedade1 - Alterar
    TítuloID SCRMID
    DescriçãoID SCRMID Scania
    Val. Sistema
    Opções
    Inic. Padrão
    Inic. Browse
    Cons. Padrão
    Nível1
    UsadoSim
    ObrigatórioNão
    BrowseSim
    When
    Pasta
    Help

    Informe o código único do registro SCRMID da Scania. Esse valor é utilizado para associar corretamente o registro no sistema, garantindo controle, auditoria e acompanhamento das operações.

    04. DEMAIS INFORMAÇÕES

    Pacote gerados

    12.1.2210:https://r.totvs.io/p/12278981234398

    12.1.2310:https://r.totvs.io/p/12278991234399

    12.1.2410:https://r.totvs.io/p/12279001234400

    12.1.2510:https://r.totvs.io/p/12279011234401


    Card documentos
    Informacao Esta atualização de dicionário estará disponível na release 12.01.2610.
    TituloIMPORTANTE!

    ...

    HTML
    <style>
      .link_container {
        display: flex;
        flex-direction: column;
        align-items: flex-start; /* Alinhado à esquerda */
        width: 100%;
        gap: 8px; /* Espaçamento entre os itens */
      }
    
      .btn-doc,
      .btn-doc:link,
      .btn-doc:visited {
        display: inline-block;
        padding: 12px 24px;
        font-size: 16px;
        font-weight: 600;
        color: #FFFFFF !important; /* Força o texto branco */ o texto branco */
        background-color: #08244C; /* Fundo azul escuro */
        border: none;
        border-radius: 8px;
        text-decoration: none;
        backgroundtext-coloralign: #08244Cleft; /* Fundo azul escuro */
        border: none
        transition: background-color 0.3s ease, transform 0.2s ease, color 0.3s ease;
      }
    
      border.btn-radiusdoc:hover 8px;{
        textbackground-decorationcolor: none;
        text-align: left;#FFFFFF; /* Azul mais claro no hover */
        transition: background-color 0.3s ease, transform 0.2s ease, color 0.3s easecolor: #08244C !important; /* Mantém texto branco */
        transform: scale(1.03);
      }
    
      .btn-doc:hoveractive {
        background-color: #FFFFFF#061B3B; /* Azul ainda mais claroescuro no hoverclique */
        color: #08244C#FFFFFF !important; /* Mantém texto branco */
        transform: scale(10.03);
      }
    
      .btn-doc:active {
        background-color: #061B3B; /* Azul ainda mais escuro no clique */
        color: #FFFFFF !important; /* Mantém texto branco */
        transform: scale(0.98);
      }
    </style>  
    
    <div class="link_container">98);
      }
    </style>  
    
    <div class="link_container">
      <a href="https://tdn.totvs.com/pages/viewpage.action?pageId=1031526686" target="_blank" class="btn-doc">     
    	📄 Integração SCRM (VEIA120)   </a>
      <a href="https://tdn.totvs.com/display/public/framework/Embedded+Audit+Trail+-+Aplicador" target="_blank" class="btn-doc">     
    	📄 Embedded Audit Trail - Aplicador
      </a>
      <a href="https://tdn.totvs.com/display/public/pages/viewpage.action?pageId=1031526686framework/Configurar+Embedded+Audit+Trail" target="_blank" class="btn-doc">     		
    	📄 Configurar IntegraçãoEmbedded SCRMAudit (VEIA120)Trail
      </a>  
      <a href="https://tdn.totvs.com/pages/viewpage.action?pageId=1032140741" target="_blank" class="btn-doc">     		
    	📄 Ponto de Entrada VA120FCP - Integração SCRM (VEIA120)   
      </a>
      <a href="https://tdn.totvs.com/pages/viewpage.action?pageId=1032141116" target="_blank" class="btn-doc">     
    	📄 Ponto de Entrada VA120FVT - Integração SCRM (VEIA120)   
      </a>
      <a href="https://tdn.totvs.com/pages/viewpage.action?pageId=1032141162" target="_blank" class="btn-doc">     
    	📄 Ponto de Entrada VA120QRY - Integração SCRM (VEIA120)   
      </a>
      <a href="https://tdn.totvs.com/pages/viewpage.action?pageId=1032143032" target="_blank" class="btn-doc">     
    	📄 Ponto de Entrada VA120PET - Integração SCRM (VEIA120)   
      </a> </div>

    ...