Definição da Regra de Negócio
Mensagem
Ao Incluir, Alterar ou Excluir um Cliente/Fornecedor, será enviada uma Mensagem XML a partir do Datasul, pertencente a Transação “CustomerVendor” versão 1.000.
O Datasul irá realizar o o envio através do Adapter criado para o módulo UTB - Tabelas Universais, baseado no XSD: “CustomerVendor_1_000.xsd”, que está disponível no TFS, no caminho abaixo:
http://tfs2015.totvs.com.br:8080/tfs/TOTVSMSGXML/STABLE/_versionControl?path=%24%2FSTABLE%2Fxmlschema%2Fgeneral%2Fevents%2FCustomerVendor_1_000.xsd
Observações:
- O Envio a partir do Datasul estará disponível independente do projeto do Operador Logístico.
- Para que o envio aconteça, basta que a transação "CustomerVendor" esteja habilitada para envio no EAI2. Desta forma, esta mensagem poderá ser utilizada por qualquer projeto futuro.
- Para garantir que não haja impacto nas releases anteriores, o envio somente será realizador se o Pré-Processador "BF_FIN_CLIEN_FORNEC_EAI2" estiver disponível. Este pré-processador será liberado a partir da 12.1.17 do Datasul.
Ajuste nos Adapters
O Adapter para transação "CustomerVendor" já existe e está disponível no caminho "com\totvs\datasul\universal\utb\CustomerVendorAdapter.cls", mas atualmente ele somente trata o Recebimento da mensagem. Portanto, ele será alterado para tratar também o Envio da mensagem.
Atualmente já existe um Adapter de Envio, disponível no caminho "com\totvs\datasul\universal\CustomerVendorAdapter.cls", mas ele pertencente ao projeto de Integração com o PIMS que foi suspenso. Desta forma, este Adapter será eliminado, e quando o projeto for retornado, ele deverá utilizar o Adapter mencionado acima.
As mesmas regras descritas acima, valem para o arquivo de Factory da mensagem "CustomerVendorFactory.cls".
Montagem do XML
Segue abaixo a Listas das TAG do XML da mensagem, e a indicação de como elas serão atualizadas:
Informações Principais
TAG | Informação |
---|
CompanyId | Empresa (cliente.cod_empresa ou fornecedor.cod_empresa) |
Code | Código (cliente.cdn_cliente ou fornecedor.cdn_fornecedor) |
ShortName | Nome Abreviado (cliente.nom_abrev ou fornecedor.nom_abrev) |
Name | Nome (cliente.nom_pessoa ou fornecedor.nom_pessoa) |
Type | Valor Fixo conforme abaixo: - "Customer" - Quando for Cliente
- "Vendor" - Quando for Fornecedor
- "Both" - Quando for Ambos
|
EntityType | Valor Fixo conforme abaixo: - "Person" - Quando for Pessoa Física
- "Company" - Quando for Pessoa Jurídica
|
MarketSegment/Code | Ramo de Negócio - Código (pessoa_jurid_ramo_negoc.cod_ramo_negoc) |
MarketSegment/Description | Ramo de Negócio - Descrição (ramo_negoc.des_ramo_negoc) |
RegisterDate | Data de Implantação (cliente.dat_impl_clien ou fornecedor.dat_impl_fornec) |
RegisterSituation | Não será atualizado, informação não existe no Datasul |
Comments | Não será atualizado, informação não existe no Datasul |
GovernmentalInformation/Id | Inscrição Federal - CPF ou CNPJ (cliente.cod_id_feder ou fornecedor.cod_id_feder) |
GovernmentalInformation/Id | Inscrição Estadual (pessoa_fisic.cod_id_estad_fisic ou pessoa_jurid.cod_id_estad_jurid) |
Endereço
Informações abaixo da TAG "Address":
TAG | Informação |
---|
Address | Endereço (pessoa_fisic.nom_endereco ou pessoa_jurid.nom_endereco) |
Number | Não será atualizado, informação não existe no Datasul |
Complement | Complemento (pessoa_fisic.nom_ender_compl ou pessoa_jurid.nom_ender_compl) |
City/Code | Cidade (pessoa_fisic.nom_cidade ou pessoa_jurid.nom_cidade) |
City/Description | Cidade (pessoa_fisic.nom_cidade ou pessoa_jurid.nom_cidade) |
District | Bairro (pessoa_fisic.nom_bairro ou pessoa_jurid.nom_bairro) |
State/Code | Estado (pessoa_fisic.cod_unid_federac ou pessoa_jurid.cod_unid_federac) |
State/Description | Estado (pessoa_fisic.cod_unid_federac ou pessoa_jurid.cod_unid_federac) |
Contry/Code | Código Internacional do Pais (pais.num_pais_dirf) |
Contry/Description | Pais (pessoa_fisic.cod_pais ou pessoa_jurid.cod_pais) |
ZIPCode | CEP (pessoa_fisic.cod_cep ou pessoa_jurid.cod_cep) |
Region | Condado (pessoa_fisic.nom_condado ou pessoa_jurid.nom_condado) |
POBox | Caixa Postal (pessoa_fisic.cod_cx_post ou pessoa_jurid.cod_cx_post) |
Endereço de Entrega
Informações abaixo da TAG "ShippingAddress":
TAG | Informação |
---|
Address | Endereço (ender_entreg.nom_ender_entreg) |
Number | Não será atualizado, informação não existe no Datasul |
Complement | Não será atualizado, informação não existe no Datasul |
City/Code | Cidade (ender_entreg.nom_cidad_entreg) |
City/Description | Cidade (ender_entreg.nom_cidad_entreg) |
District | Bairro (ender_entreg.nom_bairro_entreg) |
State/Code | Estado (ender_entreg.cod_unid_federac_entreg) |
State/Description | Estado (ender_entreg.cod_unid_federac_entreg) |
Contry/Code | Código Internacional do Pais (pais.num_pais_dirf) |
Contry/Description | Pais (ender_entreg.cod_pais_entreg) |
ZIPCode | CEP (ender_entreg.cod_cep_entreg) |
Region | Condado (ender_entreg.nom_condad_entreg) |
POBox | Caixa Posta (ender_entreg.cod_cx_post_entreg) |
Lista das Informações de Comunicação
Informações abaixo da TAG "ListOfCommunicationInformation/CommunicationInformation":
TAG | Informação |
---|
PhoneDDD | Não será atualizado, informação não existe no Datasul |
PhoneNumber | Telefone (pessoa_fisic.cod_telefone ou pessoa_jurid.cod_telefone) |
PhoneExtension | Ramal (pessoa_fisic.cod_ramal / para pessoa Jurídica não há) |
FaxDDD | Não será atualizado, informação não existe no Datasul |
FaxNumber | Fax (pessoa_fisic.cod_fax ou pessoa_jurid.cod_fax) |
FaxNumberExtension | Ramal Fax (pessoa_fisic.cod_ramal_fax ou pessoa_jurid.cod_ramal_fax) |
HomePage | HomePage (pessoa_fisic.nom_home_page ou pessoa_jurid.nom_home_page) |
Email | e-mail (pessoa_fisic.cod_e_mail ou pessoa_jurid.cod_e_mail) |
Lista de Contatos
Informações abaixo da TAG "ListOfContacts/Contact":
TAG | Informação |
---|
Code | Código (contato.nom_abrev_contat) |
Title | Não será atualizado, informação não existe no Datasul |
Name | Nome (contato.nom_pessoa) |
Department | Não será atualizado, informação não existe no Datasul |
CommunicationInformation/PhoneDDD | Não será atualizado, informação não existe no Datasul |
CommunicationInformation/PhoneNumber | Telefone (contato.cod_telef_contat) |
CommunicationInformation/PhoneExtension | Ramal (contato.cod_ramal_contat) |
CommunicationInformation/FaxDDD | Não será atualizado, informação não existe no Datasul |
CommunicationInformation/FaxNumber | Fax (contato.cod_fax_contat) |
CommunicationInformation/FaxNumberExtension | Ramal Fax (contato.cod_ramal_fax_contat) |
CommunicationInformation/HomePage | Não será atualizado, informação não existe no Datasul |
CommunicationInformation/Email | e-mail (contato.cod_e_mail_contat) |
Address/Address | Endereço (contato.nom_endereco) |
Address/Number | Não será atualizado, informação não existe no Datasul |
Address/Complement | Complemento (contato.nom_ender_compl) |
Address/City/Code | Cidade (contato.nom_cidade) |
Address/City/Description | Cidade (contato.nom_cidade) |
Address/District | Bairro (contato.nom_bairro) |
Address/State/Code | Estado (contato.cod_unid_federac) |
Address/State/Description | Estado (contato.cod_unid_federac) |
Address/Contry/Code | Código Internacional do Pais (pais.num_pais_dirf) |
Address/Contry/Description | Pais (contato.cod_pais) |
Address/ZIPCode | CEP (contato.cod_cep_cobr) |
Address/Region | Não será atualizado, informação não existe no Datasul |
Address/POBox | Caixa Postal (contato.cod_cx_post) |
Lista de Informações Bancárias
Informações abaixo da TAG "ListOfBankingInformation/BankingInformation":
Observação:
- Para Cliente, serão consideras as informações Bancárias do Cliente Financeiro;
- Para Fornecedor, será considera da Lista de Contas Correntes do Fornecedor Financeiro.
TAG | Informação |
---|
BankCode | Código do Banco (clien_financ.cod_banco ou cta_corren_fornec.cod_banco) |
BankName | Descrição do Banco (banco.nom_banco) |
BranchCode | Agência (clien_financ.cod_agenc_bcia ou cta_corren_fornec.cod_agenc_bcia) |
BranchKey | Dígito da Agência (clien_financ.cod_digito_agenc_bcia ou cta_corren_fornec.cod_digito_agenc_bcia) |
CheckingAccountNumber | Conta Corrente (clien_financ.cod_cta_corren_bco ou cta_corren_fornec.cod_cta_corren_bco) |
CheckingAccountNumberKey | Dígito da Conta Corrente (clien_financ.cod_digito_cta_corren ou cta_corren_fornec.cod_digito_cta_corren) |
Endereço de Cobrança
Informações abaixo da TAG "BillingInformation":
TAG | Informação |
---|
BillingCustomerCode | Não será atualizado, informação não existe no Datasul |
Address/Address | Endereço (pessoa_fisic.nom_ender_cobr ou pessoa_jurid.nom_ender_cobr) |
Address/Number | Não será atualizado, informação não existe no Datasul |
Address/Complement | Complemento (pessoa_fisic.nom_ender_compl_cobr ou pessoa_jurid.nom_ender_compl_cobr) |
Address/City/Code | Cidade (pessoa_fisic.nom_cidad_cobr ou pessoa_jurid.nom_cidad_cobr) |
Address/City/Description | Cidade (pessoa_fisic.nom_cidad_cobr ou pessoa_jurid.nom_cidad_cobr) |
Address/District | Bairro (pessoa_fisic.nom_bairro_cobr ou pessoa_jurid.nom_bairro_cobr) |
Address/State/Code | Estado (pessoa_fisic.cod_unid_federac_cobr ou pessoa_jurid.cod_unid_federac_cobr) |
Address/State/Description | Estado (pessoa_fisic.cod_unid_federac_cobr ou pessoa_jurid.cod_unid_federac_cobr) |
Address/Contry/Code | Código Internacional do Pais (pais.num_pais_dirf) |
Address/Contry/Description | Pais (pessoa_fisic.cod_pais ou pessoa_jurid.cod_pais) |
Address/ZIPCode | CEP (pessoa_fisic.cod_cep_cobr ou pessoa_jurid.cod_cep_cobr) |
Address/Region | Condado (pessoa_fisic.nom_condad_cobr ou pessoa_jurid.nom_condad_cobr) |
Address/POBox | Caixa Postal (pessoa_fisic.cod_cx_post_cobr ou pessoa_jurid.cod_cx_post_cobr) |
Informações de Fornecedor
Informações abaixo da TAG "VendorInformation":
TAG | Informação |
---|
VendorClassification | Valor Fixo conforme abaixo (fornecedor.cdn_classif_fornec): - "Raw Material" - Para Matéria Prima
- "Service" - Para Serviços
- "Both" - Para Ambos
- "Generic" - Para Genérico
|
VendorType/Code | Tipo do Fornecedor (fornecedor.cod_tip_fornec) |
VendorType/Description | Descrição do Tipo (tip_fornec.des_tip_fornec) |
Informações Fiscais
Informações abaixo da TAG "FiscalInformation":
TAG | Informação |
---|
Category | Não será atualizado, informação não existe no Datasul |
IsRetentionAgent | Agente de Retenção (clien_financ.log_retenc_impto ou fornec_financ.log_retenc_impto) |
Lista de Impostos Vinculados
Informações abaixo da TAG "FiscalInformation/TaxPayer":
TAG | Informação |
---|
TaxName | Descrição do Imposto (imposto.des_imposto) |
isPayer | Não será atualizado, informação não existe no Datasul |
mode | Não será atualizado, informação não existe no Datasul |
Informações de Análise de Crédito
Informações abaixo da TAG "CreditInformation":
Observações:
- Informações disponíveis apenas no módulo de Avaliação de Crédito, portanto as informações serão buscadas de lá no momento da geração do XML;
- Estas informações estão disponíveis no programa: CM0102 - Informações de Crédito do Cliente.
TAG | Informação |
---|
CreditIndicator | Indicador de Crédito (emitente.ind-cre-cli) |
CreditEvaluation | Indicador de Avaliação (emitente.ind-aval) |
ShipmentCreditEvaluation | Indicador de Avaliação de Crédito Embarque (emitente.ind-aval-embarque) |
CreditLimit | Limite de Crédito (emitente.lim-credito) |
CreditLimitCurrency | Moeda do Limte de Crédito (emitente.moeda-libcre) |
CreditLimitDate | Data do Limite de Crédito (emitente.dt-lim-cred) |
AdditionalCreditLimit | Limite de Crédito Adicional (emitente.lim-adicional) |
AdditionalCreditLimitCurrency | Moeda do Limite de Crédito Adicional (emitente.moeda-libcre) |
AdditionalCreditLimitDate | Data Fim do Limite de Crédito Adicional (emitente.dt-fim-cred) |
LatePeriods | Número de Períodos de Atraso (emitente.nr-peratr) |
Chamada do Apdater nos Programas de Cadastro
Programa Fachada
Não deve ser feita referência as variáveis do Adpater (CustomerVendor), diretamente dentro dos programas já existem, pois teremos problemas em liberações especiais em releases anteriores. Portanto, será construído um programa novo (fachada), que será intermediário para chamada do Adapter;
Os programas de Inclusão, Alteração e Exclusão de Cliente/Fornecedor serão alterados para chamar este novo programa;
Este novo programa irá verificar se a Transação "CustomerVendor" está habilitada para envio no EAI2 (transactionstatus.i), caso não esteja, o programa não irá chamar o Adapter.
Programas Chamadores
De forma geral, os programas alterados para chamada do programa fachada, serão os mesmos que hoje já fazem a chamada do Adapter do EAI1, mas alguns deles não serão alterados, pois a Mensagem Única utilizada no EAI2, não possui todas as informação que são tratadas pelo EAI1.
Abaixo segue a lista dos programas que devem e os que não devem ser alterados.
Programas que devem ser alterados
Programa Base | Programas a serem alterados |
---|
Cadastro de Pessoa Física (utb030aa) | prgint/utb/utb030eb.p (mod_pessoa_fisic_base) |
Cadastro de Pessoa Jurídica (utb006aa) | prgint/utb/utb006eb.p (mod_pessoa_jurid_base) prgint/utb/utb006mb.p (frm_pessoa_jurid_ramo_negoc) |
Cadastro de Fornecedor (utb031aa) | prgint/utb/utb031ab.py (rpt_fornecedor_copia) prgint/utb/utb031ea.p (mod_fornecedor) prgint/utb/utb031ga.p (era_fornecedor) |
Cadastros de Fornecedor Financeiro (ufn003aa) | prgint/ufn/ufn003ab.py (rpt_fornec_financ_copia) prgint/ufn/ufn003ea.p (mod_fornec_financ) prgint/ufn/ufn003ga.p (era_fornec_financ) prgint/ufn/ufn003za.p (fnc_fornec_financ) |
Cadastro de Cliente (utb107aa) | prgint/utb/utb107ab.py (rpt_cliente_copia) prgint/utb/utb107ea.p (mod_cliente) prgint/utb/utb107ga.p (era_cliente) |
Cadastro de Cliente Financeiro (ufn011aa) | prgint/ufn/ufn011ab.py (rpt_clien_financ_copia) prgint/ufn/ufn011ea.p (mod_clien_financ) prgint/ufn/ufn011ga.p (era_clien_financ) prgint/ufn/ufn011za.p (fnc_clien_financ) |
Cadastro de Contato (utb068aa) | prgint/utb/utb068ca.p (add_contato) prgint/utb/utb068ea.p (mod_contato) prgint/utb/utb068ga.p (era_contato) |
Atualização Batch Cliente/Fornecedor (ufn705aa) | prgint/utb/utb704zd.py (fnc_gera_tt_clien_fornec_integr_4) |
API de Cliente/Fornecedor (utb765zl) | prgint/utb/utb765zl.py (api_atualizar_cliente_fornecedor_l) |
Programas que NÃO devem ser alterados
Os programas listados abaixo fazem a execução do Adapter do EAI1, mas NÃO devem ser alterados para executar o Adapter do EAI2, pois as informações alteradas, não existem na nova mensagem do EAI2.
Programa Base | Sub-Programa |
---|
Cadastro de Pessoa Física x Idioma (utb030aa) | prgint/utb/utb030da.p (add_idiom_pessoa_fisic) prgint/utb/utb030fa.p (mod_idiom_pessoa_fisic) prgint/utb/utb030ha.p (era_idiom_pessoa_fisic) prgint/utb/utb946wj.py (dbo_idiom_pessoa_fisic) |
Cadastro de Pessoa Jurídica x Atividade (utb006) | prgint/utb/utb006ma.p (frm_pessoa_jurid_ativid) |
Cadastro de Porte Pessoa Jurídica (utb022aa) | prgint/utb/utb022ca.p (add_porte_pessoa_jurid) prgint/utb/utb022ea.p (mod_porte_pessoa_jurid) prgint/utb/utb022ga.p (era_porte_pessoa_jurid) |
Importação de Histórico de Fornecedor (dcf718aa) | prgint/dcf/dcf718zb.p (fnc_histor_fornec_importar_ems) |
Cadastro Clientes Análise de Crédito (utb026aa) | prgint/utb/utb026ca.p (add_clien_analis_cr) prgint/utb/utb026ea.p (mod_clien_analis_cr) prgint/utb/utb026ga.p (era_clien_analis_cr) |
Cadastro de Contato x Idioma (utb068aa) | prgint/utb/utb068da.p (add_idiom_contat) prgint/utb/utb068fa.p (mod_idiom_contat) prgint/utb/utb068ha.p (era_idiom_contat) |
Cadastro de Contato x Classe (utb068aa) | prgint/utb/utb068db.p (add_contat_clas) prgint/utb/utb068hb.p (era_contat_clas) |
Tratamento Específico para o Operador Logístico
De forma geral, se a transação "CustomerVendor" estiver configurado no EAI2, o mensagem será envida, mas teremos um tratamento específico quando o produto estiver parametrizado para o Operador Logístico, onde será realizado um filtro daqueles cadastros que devem ou não serem replicados.
Este filtro será feito com base nos Grupos de Cliente ou Fornecedor, onde o usuário irá indicar quais devem ser considerados para envio.
Esta parametrização será feita nos Parâmetros do Operador Logístico, conforme descrito abaixo.
Alteração no Parâmetros do Operador Logístico (CD00596)
Será alterado o Parâmetros do Operador Logístico, conforme protótipo de tela (Parâmetros do Operador Logístico), para permitir ao usuário parametrizar a lista de Grupos de Cliente e Fornecedor que serão utilizados para replicação do cadastro;
Estas listas serão salvas em dois novos campos, conforme descrito em Dicionário de Dados.
Será feito um tratamento para salvar as informações em campos livres para as releases anteriores, portanto será criado um programa de acerto para estes campos novos;
Para seleção dos Grupos, será construída uma nova tela, conforme protótipo de tela (Seleção de Grupo de Cliente/Fornecedor).
Existira um tratamento para que o usuário possa escolher a opção "*", que irá valer para todos os Grupos, desta forma, não haverá filtro, os cadastros serão sempre enviados.
Controle do Envio
O novo programa criado (Programa Fachada) será alterar para somente fazer a chamada do Adapter se o Grupo de Cliente/Fornecedor estiver parametrizado para Envio no Parâmetros do Operador Logístico;
Para seleção do Parâmetro, será utilizado o Estabelecimento Corrente do Usuário, caso ele não tenha sido informado (em Troca do Estabelecimento do Usuário Financeiro), será considerado o Estabelecimento Principal da Empresa Corrente;
Mesmo que o Cadastro seja Ambos (exista com Cliente e com Fornecedor), será verificado o Grupo referente ao Cadastro que está sendo Incluir/Alterado/Excluído naquele momento, isto é, se estiver alterando o Fornecedor, irá olhar o Grupo de Fornecedor, e se estiver alterando o Cliente, será verificado o Grupo de Cliente;
Este tratamento somente será feito se, pelo menos, uma das Funções do Operador Logístico ("TMS Transportador" ou "WMS Operador Logistico") estiver ligada no HUB. Se as duas estiverem desligadas, não será verificado os Grupos e sempre irá chamar o Adapter;
Caso a Lista parametrizada estiver em Branco, ou conter o valor "*", sempre ir chamar o Adapter, independente do Grupo do Cliente/Fornecedor.