You are on page 1of 5

11/12/2014

ConceitosdefilialdecompartilhamentosdearquivosFrameworkspTDN

Frameworksp / / Trabalhandocomarquivos(Tabelasdedados)

Conceitosdefilialdecompartilhamentosdearquivos
CreatedandlastmodifiedbyAlbertoSimplciodaSilvaonJun20,2012

Ocompartilhamentodearquivosbaseadonoconceitodefiliais.Cadaempresacadastradapodeternfiliaisondeosdadosinseridospor
cadafilialcomocadastrodeprodutos,cliente,etc.podemounosercompartilhadoscomasdemaisfiliais.Esterecursosomente
possveldevidoexistnciadocampoXX_FILIAL(XXrepresentaonomedoarquivo)emtodososarquivosdosistema.

OmododeoperaodecadaarquivocompartilhadoouexclusivoestdefinidonoarquivoSX2dodicionriodedados.

Casoomododeacessosejacompartilhado,quandoumnovoregistroforinserido,ocampoXX_FILIALreceberovalor(dois
caracteresembranco)eoseucontedoservisvelporqualquerusuriodequalquerfilial.

Casoomodosejaexclusivo,quandoumnovoregistroforinserido,ocamporeceberocdigoalfanumricodafilial(noexemplo
abaixo,01ou02)eservisvelapenasparaosusuriosdafilialqueinseriuomesmo.

Exemplo:
OarquivoXXestcomomododeacessodefinidocomoexclusivonoSX2,portantoseusregistrosserovisveissomenteparaafilial
queosinseriu.Videexemploabaixo:

XX_FILIAL

XX_CODIGO

XX_DESCRI

01

30

CHAVEDEFENDA

01

22

CHAVEPHILLIPS

02

21

FURADEIRABOSCH

02

12

FURADEIRABLACK&DECKER

01

31

DREMEL

01

90

SERRATICOTICO

02

48

PRUMO

02

13

SERROTE

OsusuriosdaFilial01teroacessosomenteaosdadoscujoregistropossuaocontedo01nocampoXX_FILIAL.Josusuriosda
Filial02,acessaroosdadosdosregistroscomovalor02nocampoXX_FILIAL.

NaGestodeEmpresas,existemalgumasparticularidades,quesedeveseatentarnodesenvolvimento.Paraummelhorentendimento
sobreafuncionalidadeGestodeEmpresas,segueumabreveexplicaodosnveisqueestarodisponveisnaLinhadeProdutos
MicrosigaProtheus.

GrupodeEmpresas:NvelsuperiorquecontrolaodicionriodedadosnoMicrosigaProtheus.Exemplo:SX1??0.DBFospontos
http://tdn.totvs.com/display/framework/Conceitos+de+filial+de+compartilhamentos+de+arquivos

1/5

11/12/2014

ConceitosdefilialdecompartilhamentosdearquivosFrameworkspTDN

deinterrogaoserosubstitudospelocdigodogrupo.
Empresas:Nvelqueidentificaasempresasquefazempartedogrupo,ouseja,agorapossvelutilizarmaisdeumaempresa
paraomesmodicionriodedados.
Unidadesdenegcios:Nvelqueidentificaasunidadesdenegciosdasempresas.Destaforma,possveldefinirumnvelde
controleentreasempresasefiliais.
Filial:Nvelqueidentificaasfiliaisdasunidadesdenegciosoudasempresas

Criandoestesnveis,podemosutilizardiversasempresas,unidadesdenegciosefiliaiscompartilhandoinformaesentresi.

OniconvelobrigatrioparaaLinhadeProdutosMicrosigaProtheusafilialdenomnimodoisdgitospodendochegaradozedgitos,
osdemaisnveisdeveroserutilizadosdeacordocomanecessidadedecadacliente.

Apartirdestemomento,iremosexplicarorelacionamentoentreosnveis:

NocadastrodeGrupodeEmpresas,oadministradordoSistemadeverdefiniroleiauteutilizadoparapreenchimentodaempresa,
unidadedenegciosefilial,quenodeverultrapassardozecaracteres.

Exemplo:EEUUFFFF

Noexemploacima,definimosqueasinformaesgravadasnoscamposfiliaisseroidentificadasdaseguintemaneira:
EEDoisdgitosparaaempresa
UUDoisdgitosparaaunidadedenegcios
FFFFQuatrodgitosparaafilial

Algumasregrasquedevemserseguidaspelosdesenvolvedores:

1. UtilizarasdiretivasabaixoparaqueoprogramaaceiteasalteraesdetamanhodocampoFilial:

FWGETTAMFILIAL>RetornaotamanhoutilizadoparaaFilial(SubstituioTamanhofixode2)

Exemplo:

//FWGETTAMFILIALSample.prw
AAdd(aStr,{"XU_FILIAL","C",FWGETTAMFILIAL,0})

Nestecaso,todososlugaresqueestiveremutilizandootamanho2fixodeveroseralteradosparaquesetorneflexvelamudanado
tamanho.
FWGETCODFILIAL>RetornaocdigodaFilialposicionada(SubstituiautilizaodoM0_CODFIL)

ApartirdomomentoquefordefinidoqueotamanhodocampoFILIALpodeseraumentado,otamanhofsicodocampoM0_CODFILser
12,destamaneira,parautilizarocontedocorretoavarivelFWGETCODFILIALdeverserutilizadanolugardocampoM0_CODFIL.

Exemplo:

//FWGETCODFILIALSample.prw
FWGETCODFILIAL="1234"

Filialcomtamanho4esemoscaracteresespeciaisCERTO
Paratratamentoemdicionriosdedados,nopossvelautilizaodasstringsinformadas,pois,estasubstitudasomenteemtempo
decompilao.Destaforma,emcasodedicionriodedadosdeveutilizarasseguintesfunes:

http://tdn.totvs.com/display/framework/Conceitos+de+filial+de+compartilhamentos+de+arquivos

2/5

11/12/2014

ConceitosdefilialdecompartilhamentosdearquivosFrameworkspTDN

1. FWSizeFilial()>RetornaotamanhoutilizadoparaaFilial(SubstituioTamanhofixode2)
2. FWCodFil()>RetornaocdigodaFilialposicionada(SubstituiautilizaodoM0_CODFIL)

1. TodososnovoscamposreferenteaFilialdeveroserinseridosnogrupodecampo033(Filial).

1. Paraaatualizaodecamposconcatenados,noqual,afilialfazpartedocontedodocampo,deversercriadaumafunocom
asigladomdulo+UpdFConj()queretornarumarraycomaseguinteestrutura:

aArray[n,1]=Alias
aArray[n,2]=Campo
aArray[n,3]=Tamanhooriginaldocampo(Deveserinformadootamanhopadroenodeveserconsideradooaumentooudiminuiodo
campofilial)
aArray[n,4]=Indicaaposioemqueiniciaagravaodocampofilial(Opcional.Nocasodenoexistirestenvel,ocamposerapenas
aumentado.)
aArray[n,5]=Blocodecdigoscomafunodeatualizaodosdadosaserexecutadaquandoaposio4foriguala0(zero).

Esteblocodecdigosreceberacomoparmetroasseguintesinformaes:

cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize.

Exemplodepreenchimento:

//ConcatenatedBranchUpdateSample.prw
{|cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize|FunUpdRA(cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize)}

FunctionGPEUpdFConj()
LocalaFields:={}

Aadd(aFields,{"SRA","RA_P1FILP2",14,7})//Exemplo:"PARTE101PARTE2"
Aadd(aFields,{"SRA","RA_FILUSR",8,1})//Exemplo:"01PARTE2"
Aadd(aFields,{"SRA","RA_123456",8,0,{cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize|FunUpdRA(cAlias,cField,n
RealSize,nFilIni,nOldSize,nNewSize)}})

ReturnaFieds

FunctionFunUpdRA(cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize)
//Tratamentosnecessrioseatualizaodocontedonobancodedados
Return

1. Funesauxiliaresparaodesenvolvimentoepadronizaodosprogramas:

FWSizeFilialRetornaotamanhodocampoFilial
FWCodFilRetornaocdigodafilial
FWModeAccessRetornaomododecompartilhamento
FWGrpCompanyRetornaogrupo
FWAllGrpCompanyRetornaosgruposdeempresas
FWCompanyRetornaaempresa
FWAllCompanyRetornaasempresasdogrupodeempresas
FWUnitBusinessRetornaaunidadedenegcio
FWAllUnitBusinessRetornaasunidadesdenegciosparaogrupoeempresa
FWFilialRetornaafilial
http://tdn.totvs.com/display/framework/Conceitos+de+filial+de+compartilhamentos+de+arquivos

3/5

11/12/2014

ConceitosdefilialdecompartilhamentosdearquivosFrameworkspTDN

FWAllFilialRetornaasfiliaisparaogrupodeempresas
FWLoadSM0Carregaasinformaesdasfiliais
FWSM0LayoutRetornaoleiaute
FWXFilialRetornaastring
FWGrpNameRetornaonomedogrupodeempresas
FWFilialNameRetornaonomedafilial
FWFilRazSocialRetornaaRazoSocial
FWArrFilAtuRetornatodasinformaesreferenteaempresa,unidadedenegcioefilial
FWFilialStatusRetornaostatusdafilialposicionada
FWCodEmpRetornaocdigodaempresa
FWPesqSM0Exibeafiliaisdisponveisparaogrupodeempresaatual
FWUnitNameRetornaonomedaUnidadedeNegcios
FWCompanyNameRetornaonomedaempresa
FWFilExistVerificaseafilialexiste
FWEmpNameNomedaempresa
FWFilNameNomedafilial

1. OsprogramasqueutilizamavarreduranatabelaSM0(While),devemutilizarafunoFWLoadSM0()queretornaumarraycom
todasasinformaesdoSIGAMAT.

Exemplo:

//FWLoadSM0Sample.prw

aSM0:=FWLoadSM0()
FornI:=1ToLen(aSM0)
//TratamentosdesejadoscomasinformaesdoSIGAMAT
NextnI

1. Pararetornarinformaesdeumafilialespecfica,utilizeafunoFWArrFilAtu().

Exemplo:

//FWArrFilAtuSample.prw

aFil:=FWArrFilAtu(cEmpAnt,cFilAnt)

aFil:=FWArrFilAtu("04","E01U01F03")

7.OambientedeGestodePessoaljutilizavaoconceitodemultiempresas,sendoassim,parautilizaraempresadeveseverificarse
existeaempresaconfiguradaparaogrupoecasonoestejaconfiguradapegarocontedodoprpriogrupoparamanterolegado.

Exemplo:

//FWLoadSM0LegacySample.prw

aSM0:=FWLoadSM0()
FornI:=1ToLen(aSM0)
If!Empty(aSM0[nI,SM0_EMPRESA])
cEmp:=aSM0[nI,SM0_EMPRESA]
Else
cEmp:=aSM0[nI,SM0_GRPEMP]
EndIf
http://tdn.totvs.com/display/framework/Conceitos+de+filial+de+compartilhamentos+de+arquivos

4/5

11/12/2014

ConceitosdefilialdecompartilhamentosdearquivosFrameworkspTDN

//UtilizaavarivelcEmp
NextnI

Estasregrasdevemserutilizadasnosistemaecustomizaes.Destaforma,muitoimportanterevisarascustomizaesdosclientes
antesdecomearautilizaraGestodeEmpresas.

Concluindo,aGestodeEmpresas,presentenaLinhadeProdutosMicrosigaProtheus,permitecompartilharasdefiniesdoModelo
dedadosentreasempresasconfiguradasnosistema,almdeintroduziroconceitodeUnidadedeNegcio.

http://tdn.totvs.com/display/framework/Conceitos+de+filial+de+compartilhamentos+de+arquivos

5/5

You might also like