Reducción de tiempo y esfuerzo

La semántica específica de MECAF hace que el profesional pueda no especificar elementos y comportamientos comunes a todos los procesos administrativos, así reduciendo tiempo y esfuerzo.

Lenguaje unificado

MECAF sirve como lenguaje unificado para las distintas aplicaciones que sistematizan procesos administrativos, esto facilita la creación de generadores y migradores automáticos.

Mejores prácticas

MECAF establece reglas que deben cumplirse a la hora de la descripción del circuito, y las mismas involucran mejores prácticas fundamentales a la hora de sistematizar el mismo.

Descripción

MECAF es una convención que permite describir circuitos administrativos de organizaciones de cualquier tipo, sus flujos, su secuencia, sus responsables, la definición de las transacciones que la integran, etc. Tiene como objetivo mejorar drásticamente el modo de realizar la especificación de un sistema para su sistematización posterior.

El problema actual

A la hora de relevar hoy un circuito administrativo las herramientas que suelen utilizarse son meros dibujadores de organigramas o flujogramas, cuya mejor especialización es poseer una plantilla adecuada y elegante para este tipo de gráficos. Por lo demás no tienen prácticamente semántica, ni ningún tipo de formalización obligatoria a cumplir. Es decir, cada uno usa las herramientas gráficas como quiere.

Esto implica que finalmente esas herramientas sólo tengan por objeto mostrar las cosas de modo gráfico, como un mapa en papel. Cómo funciona realmente cada transacción, deberá especificarse en voluminosos documentos anexos.

Por otra parte existen notaciones técnicas, como el caso de UML o BPMN, que si bien tienen un nivel de formalización interesante no poseen especificidad para el problema de la administración, lo cual las vuelve herramientas muy ineficientes para el caso.


Una forma de entender la organización

MECAF establece ciertas reglas que deben cumplirse a la hora de la descripción del circuito, y las mismas involucran mejores prácticas fundamentales a la hora de sistematizar el mismo, que lo aseguran desde el punto de vista de la consistencia y la auditoría.

Por otra parte la definición en MECAF permite incorporar elementos fundamentales y verdaderamente inusuales en este tipo de diseños tales como las proyecciones financieras, o de inventarios.

Definiciones básicas

  1. Un circuito administrativo consta de transacciones que registran lo que ocurre en una organización, y relaciones de pendientes que las conectan.
  2. Las transacciones se relacionan causalmente entre sí mediante relaciones de pendientes que son especializadas para cada vínculo en particular.
  3. De una transacción pueden originarse varias relaciones de pendientes.
  4. Una transacción siempre se define en base a una transacción primitiva, de la cual es una especialización (tabla descriptiva de transacciones primitivas).
  5. La transacción puede invocar impuestos, responsables, numeradores, máquinas de estado y motores especializados (tabla descriptiva de motores especializados).
  6. La relación de pendiente o una transacción pueden invocar motores.
  7. Una vez ocurrida una transacción, la misma no se puede eliminar ni borrar, solo revertir.
  8. Las transacciones tienen una correspondencia automática entre los campos, aunque también pueden especializarse otras adicionales.

Los niveles de MECAF

Existen tres niveles de definición MECAF, y los mismos involucran diversos grados de detalle del circuito:

Nivel 0 Nivel 1 Nivel 2
Transacciones
Relaciones
Responsables
Numeradores
Impuestos

Elementos


Transacciones

Comportamiento

Estados primitivos de la transacción

Una transacción una vez inicializada queda en estado abierto. En el mismo la transacción puede ser modificada y re-grabada las veces que se desee. En el caso de no querer confirmarla la misma puede pasarse a estado de anulación, donde la misma queda en cero y sin datos (ver comportamiento de los numeradores).

Mientras la transacción se encuentra abierta la misma no genera pendientes, o sea, es incapaz de generar otras transacciones tales como asientos contables, entregas, facturas, etc.

Comportamiento de las máquinas de estado en las transacciones

Mientras la transacción se encuentra abierta, en el caso que tenga estados asociados, la misma podrá cambiar de estado. Una vez cerrada esto será imposible.

Comportamiento de la transacción cerrada

Una vez que una transacción se ha cerrado la misma es inalterable. Cuando una transacción se cierra invoca los motores, lanza los pendientes y continúa el flujo de tareas.

Transacciones primitivas

A continuación se describen brevemente las transacciones primitivas:

Comerciales

  • Transacción de ventas: Es una estructura que tiene un cliente como destinatario, un vendedor como originante, y una lista de conceptos comerciales valorizados. Tiene la capacidad de eventualmente generar compromisos de pago de ventas.
  • Transacción de compras: Es una estructura que tiene un proveedor como destinatario, un comprador como originante, y una lista de conceptos comerciales, valorizados. Tiene la capacidad de eventualmente generar compromisos de pago de compras.

Inventario

  • Ingreso de inventario: Se trata de una estructura que posee un originante, un contenedor de productos como destinatario, y una lista de productos valorizados. La valorización de los productos representa el costo de ingreso a inventario de los mismos. Los productos pasan a formar parte del inventario de la organización.
  • Egreso de inventario: Se trata de una estructura que posee un contenedor de productos como originante, un destinatario, y una lista de productos pertenecientes a la organización, valorizados. La valorización de los productos representa el costo de inventario de los mismos al momento del egreso. Los productos dejan de formar parte del inventario de la organización.
  • Transferencia de Inventario: Se trata de una estructura que posee un contenedor de productos como originante, otro como destinatario, y una lista de productos pertenecientes a la organización, valorizados. La valorización de los productos representa el costo de inventario de los mismos al momento de la transferencia. Los productos no dejan de formar parte del inventario de la organización.

Valores

  • Ingreso de valor: Esta estructura posee un originante, un contenedor de valores como destinatario, y una lista de valores no pertenecientes a la organización. Tiene la capacidad de alimentar a los motores de cuenta corriente, flujo de caja y proyecciones financieras. Los valores de la lista pasan a pertenecer a la organización.
  • Egreso de valores: Es una estructura que posee un contenedor de valores como originante, un destinatario, y una lista de valores pertenecientes a la organización. Tiene la capacidad de alimentar a los motores de cuenta corriente, flujo de caja y proyecciones financieras. Los valores de la lista dejan de pertenecer a la organización.
  • Transferencia de valores: Es una estructura que posee un contenedor de valores como originante, y otro como destinatario, y una lista de valores pertenecientes a la organización. Los valores de la lista no dejan de pertenecer a la organización.
  • Conciliación de valores: Es una estructura que posee un contenedor de valores como destinatario, y una lista de valores. Los valores como tales dejan de tener entidad y sus importes se fusionan con el de un valor predefinido. Tiene la capacidad de alimentar a los motores de cuenta corriente, flujo de caja y proyecciones financieras

Contables

  • Asiento contable: Se trata de una estructura que contiene una fecha de aplicación, y una lista de pases contables, constituidos por una cuenta contable, un importe y la indicación que especifica si dicho importe se debe acreditar o debitar a la cuenta.

Activo fijo

El activo inmovilizado se refiere a los bienes muebles e inmuebles y a los activos intangibles de la organización.

  • Alta de activo: Contiene una lista de elementos valorizados que serán convertidos en Bienes Amortizables. Si los elementos son items inventariables, dejan de pertenecer al inventario y pasan a formar parte del activo fijo de la organización.
  • Baja de activo: Se trata de una estructura que contiene una lista de Activos Fijos valorizados que dejan de pertenecer a los activos fijos de la organización. Si son items inventariables, vuelven al inventario de la organización.
  • Amortización: Esta estructura contiene una lista de Activos Fijos y los importes de amortización para un período determinado.
  • Revalúo de activo: Se trata de una estructura que posee una activo fijo y una lista de conceptos comerciales valorizados, cuyo valor se suma algebraicamente al valor del activo fijo.

Activación de gastos

  • Activación de Gastos: Se trata de una estructura que posee una lista de items del inventario valorizados y una lista de conceptos valorizados, cuyo valor se suma algebraicamente al valor de los primeros.

Imputaciones de compromisos de pago

  • Imputación: Posee un destinatario y una lista de imputaciones compuesta por un compromiso financiero origen, un compromiso financiero destino y un importe, el cual se resta de los saldos de ambos compromisos.

Servicios y Recursos de Uso

  • Solicitud de servicio: Contiene un solicitante como origen, un recurso de uso como destinatario, y una lista de servicios cuantificados y opcionalmente valorizados, que son solicitados al recurso de uso destinatario. Tiene la capacidad de impactar en el Motor de Calendarización de Recursos de Uso.
  • Parte de servicio: Esta estructura incluye un Recurso de Uso como originante, un destinatario, y una lista de servicios cumplidos, cuantificada y opcionalmente valorizada. Tiene la capacidad de impactar sobre el Motor de Calendarización de Recursos de Uso.

Novedades

  • Novedad: Es una estructura que contiene un originante, un destinatario, y una lista de novedades que son comunicadas.

Relaciones

Definiciones básicas

  • Una relación de pendiente se define como elemento vinculante entre dos transacciones ya definidas.
  • La relación de pendiente reglamenta el modo en que dos transacciones se vinculan dentro del flujo de la administración.
  • Es el elemento constitutivo básico que describe el flujo de información en la administración.

Comportamiento

Estado de una relación de pendiente

Una relación de pendiente puede estar en los siguientes estados:

  • Completamente pendiente.
  • Parcialmente pendiente.
  • Cumplimentada.

Cumplimiento de un pendiente

La transacción origen lanza el pendiente, la transacción destino lo cumplimenta de modo total o parcial. Pueden utilizarse varias transacciones destino para cumplimentar una transacción origen, o varias transacciones origen pueden ser cumplimentadas con una sola transacción de destino.


Motores

Comportamiento

Es posible definir estados dentro de una transacción. A su vez es posible definir las transiciones posibles entre esos estados, los cuales tendrán perfiles que pueden ejecutarlos. Esto típicamente se utiliza, por ejemplo, para autorizaciones de transacciones.

Motores especializados

A continuación se describen brevemente los motores especializados:

Motor de proyecciones financieras

El motor de proyecciones financieras se implementa a partir de un elemento constitutivo básico denominado Compromiso Financiero. El Compromiso Financiero puede ser generado por aquellas transacciones que tengan la capacidad y la orden de hacerlo, típicamente las de Compras, Ventas, Ingreso y Egreso de Valores. A su vez, la transacción de Imputación permite asociar dos compromisos de signo contrario, decrementando sus saldos pendientes.

Los datos principales de los compromisos financieros incluyen la fecha de creación, importe original , saldo, operador comercial (típicamente un cliente o un proveedor), fecha de vencimiento original y fecha estimada.

De esta forma, el motor de proyecciones financieras administra tanto las obligaciones (deudas) de la empresa, como sus derechos (acreencias) a fecha.

Motor de proyecciones de inventarios

Este motor administra tanto las existencias de productos físicos en el inventario de la organización, como su valuación. La información de este motor proviene de las transacciones que mueven inventarios (Ingresos, Egresos y Movimientos de Inventario) y de las relaciones de pendiente que puedan generarlas, permitiendo de esta manera conocer tanto el inventario físico real como el teórico a fecha.

Los datos principales que maneja el motor de proyecciones de inventario incluyen el producto, su ubicación física, cantidad, valor y fecha del movimiento.

Motor de calendarización de recursos de uso

Este motor administra las disponibilidad de los Recursos de Uso mediante la asignación de Citas a su Calendario asociado. Las Citas pueden ser creadas y anuladas por transacciones que tengan dicha capacidad y la orden de hacerlo, típicamente las transacciones de Solicitud de Servicios. Por otra parte, las transacciones de Parte de Servicio pueden informar al motor Citas ya cumplidas para ser registradas en un segundo calendario como registro histórico.

Lenguajes

Con la idea de facilitar la descripción formal de un circuito administrativo compatible con MECAF-0, se propone el siguiente lenguaje:

Símbolos

Símbolo Descripción
Circuito Declara la definición de un circuito de nombre <Circuito>
Trs Declara una lista de transacciones
Tr: Declara la definición de una transacción de nombre <NombreTR>
Rps Declara una lista de relaciones de pendiente
Rp: Declara la definición de una Relación de pendiente de nombre <NombreRP>
Tro: Nombre de la transacción origen de la relación
Trd: Nombre de la transacción destino de la relación
Can: Declara el tipo de cumplimiento de una relación de pendiente
Cantidad Literal. La relación de pendiente se cumple por cantidades
Valor Literal. La relación de pendiente se cumple por valores o montos.
Mes: Declara la definición de una Máquina de Estados de nombre <NombreMES>
Ests Declara la definición de una lista de Estados
Esi: Declara el estado inicial (predeterminado) con el que se inicializa la transacción
Trns Declara la definición de una lista de transiciones entre estados
Trn Declara la definición de una transición entre estados, de nombre <NombreTRN>
Eso: Declara el estado origen de una transición
Esd: Declara el estado destino en una transición

Sintaxis

Circuito =
  Trs ( [ { , } * ] ) ;
  [ Rps ( { } * ) ; ]
  Tr: =
    ( Prim:
    [, Num: ]
    [, Mes: ] );
  [ Rp: =
    ( Tro:,
     Trd:,
    Can:{ Cantidad | Valor } ) ; ]
  [ Mes: =
    ( Ests ( [ { , } ] ),
    [ Esi:, ]
    [ Trns ( [ { , } ] ) ; ]
    [ Trn: =
      ( Eso:, Esd: ) ; ]

De la definición expuesta surgen las siguientes reglas sintácticas:

  • Un circuito administrativo está compuesto por una lista no vacía de transacciones, y opcionalmente una lista de relaciones de pendiente.
  • Una transacción se define con un nombre, una primitiva, un numerador opcional y una máquina de estados opcional.
  • Una relación de pendiente se define mediante un nombre, una transacción origen, una transacción destino y un tipo de cumplimiento, que puede ser por cantidad o por valor.
  • Una máquina de estados se define mediante un nombre, una lista no vacía de estados, una lista de transiciones entre estados y opcionalmente un estado inicial o predeterminado.
  • Una transición entre estados se define mediante un nombre, un estado origen y un estado destino.

Lenguajes alternativos

Adicionalmente se proponen otras formas alternativas, como ser una descripción mediante XML y otra mediante listas. Para estos casos, se describe directamente el ejemplo.

Ejemplo como XML

<?xml version="1.0" encoding="utf-8"?>
<Circuito>
  <Nombre>Ventas</Nombre>
  <Transacciones>
    <Transaccion>
        <NombreTR>Nota de Pedido</NombreTR>
        <Primitiva>Ventas</Primitiva>
        <Numeradores>
            <Numerador>
                <NombreNum>Nota de Pedido</NombreNum>
                <NumeroIni>1</NumeroIni>
            </Numerador>
        </Numeradores>
        <MaquinaEstados>
                <Estados>
                        <Estado>Pendiente</Estado>
                        <Estado>Autorizada</Estado>
                        <Estado>Rechazada</Estado>
                </Estados>
                <EstadoInicial>Pendiente</EstadoInicial>
                <Transiciones>
                        <Transicion>
                                <NombreTransicion>Autorizar</NombreTransicion>
                                <EstadoOrigen>Pendiente</EstadoOrigen>
                                <EstadoDestino>Autorizada</EstadoDestino>
                        </Transicion>
                        <Transicion>
                                <NombreTransicion>Rechazar</NombreTransicion>
                                <EstadoOrigen>Pendiente</EstadoOrigen>
                                <EstadoDestino>Rechazada</EstadoDestino>
                        </Transicion>
                </Transiciones>
        </MaquinaEstados>
    </Transaccion>
    <Transaccion>
        <NombreTR>Remito de Venta</NombreTR>
        <Primitiva>Egreso de Inventario</Primitiva>
        <Numeradores>
            <Numerador>
                <NombreNum>Remito de Venta</NombreNum>
                <NumeroIni>1</NumeroIni>
            </Numerador>
        </Numeradores>
    </Transaccion>
    <Transaccion>
        <NombreTR>Factura de Venta</NombreTR>
        <Primitiva>Ventas</Primitiva>
        <Numeradores>
            <Numerador>
                <NombreNum>Factura de Venta A</NombreNum>
                <NumeroIni>1</NumeroIni>
            </Numerador>
            <Numerador>
                <NombreNum>Factura de Venta B</NombreNum>
                <NumeroIni>1</NumeroIni>
            </Numerador>
        </Numeradores>
    </Transaccion>
  <</Transacciones>
  <RelacionesPendiente>
    <RelacionPendiente>
        <NombreRP>Remitir Pedido</NombreRP>
        <TransaccionOrigen>Nota de Pedido</TransaccionOrigen>
        <TransaccionDestino>Remito de Venta</TransaccionDestino>
        <Cancelacion>Cantidad</Cancelacion>
    </RelacionPendiente>
    <RelacionPendiente>
        <NombreRP>Facturar Remito</NombreRP>
        <TransaccionOrigen>Remito de Venta</TransaccionOrigen>
        <TransaccionDestino>Factura de Venta</TransaccionDestino>
        <Cancelacion>Cantidad</Cancelacion>
    </RelacionPendiente>
  </RelacionesPendiente>
</Circuito>


Ejemplo como lista

Circuito Ventas =
    (
    Tr ( Nom Nota de Pedido,
        Prim Ventas,
        Num ( Nom Nota de Pedido,
        NroIni 1
        )
        Mes ( Nom Nota de Pedido,
          Ests ( Pendiente, Autorizada, Rechazada ),
          Esti Pendiente,
          Trns ( Nom Autorizar, Eso Pendiente, Esd Autorizada,
            Nom Rechazar, Eso Pendiente, Esd Rechazada
          )
        ) /* Fin Mes */
    ) /* Fin Tr Nota de Pedido */
    Tr ( Nom Remito de Venta,
      Prim Egreso de Inventario,
      Num ( Nom Remito de Venta,
        NroIni 1
      )
    ) /* Fin Tr Remito de Venta */
    Tr ( Nom Factura de Venta,
      Prim Ventas,
      Num ( Nom Factura de Venta A,
        NroIni 1
      )       Num ( Nom Factura de Venta B,
        NroIni 1
      )     ) /* Fin Tr Factura de Venta */
    Rp ( Nom Remitir Pedido,
        Tro Nota de Pedido,
        Trd Remito de Venta,
        Can Cantidad     ) /* Fin Relacion de Pendiente Remitir Pedido */
    Rp ( Nom Facturar Remito,
        Tro Remito de Venta,
        Trd Factura de Venta,
        Can Cantidad
    ) /* Fin Relacion de Pendiente Facturar Remito */
) /* Fin Circuito Ventas */