Escolar Documentos
Profissional Documentos
Cultura Documentos
O compartilhamento de arquivos é baseado no conceito de filiais. Cada empresa cadastrada pode ter n filiais onde os dados inseridos por cada
filial - como cadastro de produtos, cliente, etc. - podem ou não ser compartilhados com as demais filiais. Este recurso somente é possível devido
à existência do campo “XX_FILIAL” (“XX” representa o nome do arquivo) em todos os arquivos do sistema.
O modo de operação de cada arquivo - compartilhado ou exclusivo - está definido no arquivo SX2 do dicionário de dados.
Caso o modo de acesso seja compartilhado, quando um novo registro for inserido, o campo XX_FILIAL receberá o valor “ “ (dois caracteres em
branco) e o seu conteúdo será visível por qualquer usuário de qualquer filial.
Caso o modo seja exclusivo, quando um novo registro for inserido, o campo receberá o código - alfanumérico - da filial ( no exemplo abaixo, “01”
ou “02” ) e será visível apenas para os usuários da filial que inseriu o mesmo.
Exemplo:
O arquivo XX está com o modo de acesso definido como exclusivo no SX2, portanto seus registros serão visíveis somente para a filial que os
inseriu. Vide exemplo abaixo:
01 30 CHAVE DE FENDA
01 22 CHAVE PHILLIPS
02 21 FURADEIRA BOSCH
01 31 DREMEL
01 90 SERRA TICO-TICO
02 48 PRUMO
02 13 SERROTE
Os usuários da Filial 01 terão acesso somente aos dados cujo registro possua o conteúdo “01” no campo XX_FILIAL. Já os usuários da Filial 02,
acessarão os dados dos registros com o valor “02” no campo XX_FILIAL.
Na Gestão de Empresas, existem algumas particularidades, que se deve se atentar no desenvolvimento. Para um melhor entendimento sobre a
funcionalidade Gestão de Empresas, segue uma breve explicação dos níveis que estarão disponíveis na Linha de Produtos Microsiga Protheus.
Grupo de Empresas: Nível superior que controla o dicionário de dados no Microsiga Protheus. Exemplo: SX1??0.DBF – os pontos de
interrogação serão substituídos pelo código do grupo.
Empresas: Nível que identifica as empresas que fazem parte do grupo, ou seja, agora é possível utilizar mais de uma empresa para o
mesmo dicionário de dados.
Unidades de negócios: Nível que identifica as unidades de negócios das empresas. Desta forma, é possível definir um nível de controle
entre as empresas e filiais.
Filial: Nível que identifica as filiais das unidades de negócios ou das empresas
Criando estes níveis, podemos utilizar diversas empresas, unidades de negócios e filiais compartilhando informações entre si.
O único nível obrigatório para a Linha de Produtos Microsiga Protheus é a filial de no mínimo dois dígitos podendo chegar a doze dígitos, os
demais níveis deverão ser utilizados de acordo com a necessidade de cada cliente.
No cadastro de Grupo de Empresas, o administrador do Sistema deverá definir o leiaute utilizado para preenchimento da empresa, unidade de
negócios e filial, que não deverá ultrapassar doze caracteres.
Exemplo: EEUUFFFF
No exemplo acima, definimos que as informações gravadas nos campos filiais serão identificadas da seguinte maneira:
1. Utilizar as diretivas abaixo para que o programa aceite as alterações de tamanho do campo Filial:
Exemplo:
// FWGETTAMFILIALSample.prw
Neste caso, todos os lugares que estiverem utilizando o tamanho 2 fixo deverão ser alterados para que se torne flexível a mudança do tamanho.
A partir do momento que for definido que o tamanho do campo FILIAL pode ser aumentado, o tamanho físico do campo M0_CODFIL será 12,
desta maneira, para utilizar o conteúdo correto a variável FWGETCODFILIAL deverá ser utilizada no lugar do campo M0_CODFIL.
Exemplo:
// FWGETCODFILIALSample.prw
FWGETCODFILIAL = "1234"
Para tratamento em dicionários de dados, não é possível a utilização das strings informadas, pois, esta é substituída somente em tempo de
compilação. Desta forma, em caso de dicionário de dados deve utilizar as seguintes funções:
1. FWSizeFilial() -> Retorna o tamanho utilizado para a Filial (Substitui o Tamanho fixo de 2)
2. FWCodFil() -> Retorna o código da Filial posicionada (Substitui a utilização do M0_CODFIL)
1. Todos os novos campos referente a Filial deverão ser inseridos no grupo de campo “033” (Filial).
1. Para a atualização de campos concatenados, no qual, a filial faz parte do conteúdo do campo, deverá ser criada uma função com a sigla
do módulo + “UpdFConj()” que retornará um array com a seguinte estrutura:
aArray[n,1]=Alias
aArray[n,2]=Campo
aArray[n,3]=Tamanho original do campo (Deve ser informado o tamanho padrão e não deve ser considerado o aumento ou diminuição do campo
filial)
aArray[n,4]=Indica a posição em que inicia a gravação do campo filial (Opcional. No caso de não existir este nível, o campo será apenas
aumentado.)
aArray[n,5]=Bloco de códigos com a função de atualização dos dados a ser executada quando a posição 4 for igual a 0 (zero).
cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize.
Exemplo de preenchimento:
// ConcatenatedBranchUpdateSample.prw
{ |cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize|FunUpdRA( cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize ) }
Function GPEUpdFConj()
Local aFields := {}
Aadd(aFields, { "SRA", "RA_123456", 8, 0, { cAlias, cField, nRealSize, nFilIni, nOldSize, nNewSize| FunUpdRA(cAlias, cField,n RealSize, nFilIni,
nOldSize, nNewSize) }} )
Return aFieds
Function FunUpdRA(cAlias, cField, nRealSize, nFilIni, nOldSize, nNewSize)
Return
1. Os programas que utilizam a varredura na tabela SM0 (While), devem utilizar a função FWLoadSM0() que retorna um array com todas
as informações do SIGAMAT.
Exemplo:
// FWLoadSM0Sample.prw
aSM0 := FWLoadSM0()
For nI := 1 To Len(aSM0)
Next nI
Exemplo:
// FWArrFilAtuSample.prw
aFil := FWArrFilAtu(cEmpAnt, cFilAnt)
7. O ambiente de Gestão de Pessoal já utilizava o conceito de multi empresas, sendo assim, para utilizar a empresa deve-se verificar se existe a
empresa configurada para o grupo e caso não esteja configurada pegar o conteúdo do próprio grupo para manter o legado.
Exemplo:
// FWLoadSM0LegacySample.prw
aSM0 := FWLoadSM0()
For nI := 1 To Len(aSM0)
If !Empty(aSM0[nI,SM0_EMPRESA])
cEmp := aSM0[nI,SM0_EMPRESA]
Else
cEmp := aSM0[nI,SM0_GRPEMP]
EndIf
Next nI
Estas regras devem ser utilizadas no sistema e customizações. Desta forma, é muito importante revisar as customizações dos clientes antes de
começar a utilizar a Gestão de Empresas.
Concluindo, a Gestão de Empresas, presente na Linha de Produtos Microsiga Protheus, permite compartilhar as definições do “Modelo de
dados” entre as empresas configuradas no sistema, além de introduzir o conceito de Unidade de Negócio.