El uso compartido de archivos se basa en el concepto de sucursales. Cada empresa registrada puede tener n sucursales donde los datos incluidos por cada sucursal, como por ejemplo, archivo de productos, cliente, etc., pueden ser compartidos con las otras sucursales. Este recurso solamente es posible debido a la existencia del campo "XX_FILIAL" ("XX" representa el nombre del archivo) en todos los archivos del sistema.
El modo de operación de cada archivo, compartido o exclusivo, está definido en el archivo SX2 del diccionario de datos.
Si el modo de acceso es compartido, cuando un nuevo registro se incluye, el campo XX_FILIAL recibirá el valor " " (dos caracteres en blanco) y su contenido será visible por cualquier usuario de cualquier sucursal.
Si el modo es exclusivo, cuando se incluye un nuevo registro, el campo recibirá el código alfanumérico de la sucursal (en el siguiente ejemplo, "01" o "02" ) y será visible únicamente para los usuarios de la sucursal que este incluyó.
Ejemplo:
El archivo XX está con el modo de acceso definido como exclusivo en el SX2, por lo tanto, sus registros serán visibles únicamente para la sucursal que los incluyó. Vea el siguiente ejemplo:
XX_FILIAL | XX_CODIGO | XX_DESCRI |
01 | 30 | DESTORNILLADOR |
01 | 22 | DESTORNILLADOR DE ESTRELLA |
02 | 21 | TALADRO BOSCH |
02 | 12 | TALADRO BLACK & DECKER |
01 | 31 | TALADRO DREMEL |
01 | 90 | SIERRA DE VAIVÉN |
02 | 48 | PLOMADA |
02 | 13 | SERRUCHO |
Los usuarios de la Sucursal 01 tendrán acceso únicamente a los datos cuyo registro tiene el contenido "01" en el campo XX_FILIAL. Ya los usuarios de la Sucursal 02, accederán a los datos de los registros con el valor "02" en el campo XX_FILIAL.
En la Gestión de empresas, existen algunas particularidades, que deben tomarse en cuenta en su desarrollo. Para una mejor comprensión sobre la función Gestión de empresas, a continuación se realiza una breve explicación de los niveles que estarán disponibles en la Línea de Productos Microsiga Protheus.
Al crear estos niveles, podemos utilizar diversas empresas, unidades de negocios y sucursales compartiendo información entre sí.
El único nivel obligatorio para la Línea de Productos Microsiga Protheus es la sucursal con un mínimo de dos dígitos, pudiendo llegar a doce dígitos, los otros niveles deben utilizarse de acuerdo con la necesidad de cada cliente.
A partir de este momento, explicaremos el vínculo entre los niveles:
En el archivo de Grupo de empresas, el administrador del Sistema debe definir el layout utilizado para la cumplimentación de la empresa, unidad de negocios y sucursal, que no debe sobrepasar de doce caracteres.
Ejemplo: EEUUFFFF
En el ejemplo anterior, definimos que la información grabada en los campos sucursales se identificarán de la siguiente manera:
EE – Dos dígitos para la empresa.
UU – Dos dígitos para la unidad de negocios.
FFFF – Cuatro dígitos para la sucursal.
Algunas reglas que los desarrolladores deben seguir:
FWGETTAMFILIAL-> Retorna el tamaño utilizado para la Sucursal (Sustituye el tamaño fijo de 2)
Ejemplo:
// FWGETTAMFILIALSample.prw
AAdd(aStr, {"XU_FILIAL", "C", FWGETTAMFILIAL, 0})
En este caso, todos los lugares que estén utilizando el tamaño 2 fijo deben modificarse para que se haga flexible el cambio de tamaño.
FWGETCODFILIAL -> Retorna el código de la Sucursal marcada (Sustituye la utilización del M0_CODFIL)
A partir del momento que se define que el tamaño del campo SUCURSAL puede aumentarse, el tamaño físico del campo M0_CODFIL será 12, de esta manera, para utilizar el contenido correcto, debe utilizarse la variable FWGETCODFILIAL en lugar del campo M0_CODFIL.
Ejemplo:
// FWGETCODFILIALSample.prw
FWGETCODFILIAL = "1234"
Sucursal con tamaño 4 y sin los caracteres especiales - CORRECTO
Para el tratamiento en diccionarios de datos, no es posible la utilización de los strings informados, pues, esta solo se sustituye en tiempo de compilación. De esta manera, en el caso del diccionario de datos deben utilizarse las siguientes funciones:
aArray[n,1]=Alias
aArray[n,2]=Campo
aArray[n,3]=Tamaño original del campo (Debe informarse el tamaño estándar y no debe considerarse el aumento o disminución del campo sucursal)
aArray[n,4]=Indica la posición en que se inicia la grabación del campo sucursal (Opcional. En caso de no que no exista este nivel, el campo solamente se aumentará.)
aArray[n,5]=Bloque de códigos con la función de actualización de los datos que se ejecutará cuando la posición 4 sea igual a 0 (cero).
Este bloque de códigos recibirá como parámetro la siguiente información:
cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize.
Ejemplo de cumplimentación:
// ConcatenatedBranchUpdateSample.prw
{ |cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize|FunUpdRA( cAlias,cField,nRealSize,nFilIni,nOldSize,nNewSize ) }
Function GPEUpdFConj()
Local aFields := {}
Aadd(aFields, { "SRA", "RA_P1FILP2", 14, 7 } ) // Ejemplo: "PARTE101PARTE2"
Aadd(aFields, { "SRA", "RA_FILUSR", 8, 1 } ) // Ejemplo: "01PARTE2"
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)
// Tratamientos necesarios y actualización del contenido en la base de datos
Return
Ejemplo:
// FWLoadSM0Sample.prw
aSM0 := FWLoadSM0()
For nI := 1 To Len(aSM0)
//Tratamientos deseados con la información del SIGAMAT
Next nI
Ejemplo:
// FWArrFilAtuSample.prw
aFil := FWArrFilAtu(cEmpAnt, cFilAnt)
aFil := FWArrFilAtu("04", "E01U01F03")
7 El entorno Gestión de personal ya utilizaba el concepto de multiempresas, de esta manera, para utilizar la empresa debe verificarse si la empresa existe configurada para el grupo y si no lo está, colar el contenido del propio grupo para mantener el legado.
Ejemplo:
// 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
// Utiliza la variable cEmp
Next nI
Estas reglas deben utilizarse en el sistema de personalizaciones. De esta manera es muy importante revisar las personalizaciones de los clientes antes de comenzar a utilizar la Gestión de empresas.
En conclusión, la Gestión de empresas, presente en la Línea de Productos Microsiga Protheus, permite compartir las definiciones del "Modelo de datos" entre las empresas configuradas en el sistema, además de introducir el concepto de Unidad de negocio.