Skip to main content

What is SMAF?

SMAF (Sistema de Manejo de Asignaciones Federales) is an internal web-based application designed to manage and control travel expenses (viaticos) and travel allowances for the Mexican Federal Public Administration, specifically for INAPESCA (National Institute of Fisheries and Aquaculture). The system streamlines the entire lifecycle of travel requests, from initial commission requests to final payment and expense verification, ensuring transparency and accountability in the use of federal resources.

Main Features

Commission Management

Create, track, and manage travel commission requests with detailed itineraries, objectives, and budget allocations

Multi-Level Authorization

Role-based authorization workflow including Project Managers, Supervisors (Vobo), and Final Authorizers

Expense Verification

Submit and validate expense reports with XML fiscal receipts (CFDI v3.3 and v4.0) and supporting documentation

Payment Processing

Process travel allowance payments with bank account integration and payment tracking

Budget Control

Real-time budget tracking by project, program, and budget line item (partida presupuestal)

Transparency Reporting

Generate reports for public transparency requirements and internal auditing

User Roles

SMAF implements a comprehensive role-based access control system. Different users have different permissions and workflows:
1

Investigador (Researcher)

Request travel commissions, submit expense reports, and view their own commission history
2

Responsable de Proyecto (Project Manager)

Review and approve commission requests from their project team members
3

Vobo (Supervisor)

Provide supervisory approval (Visto Bueno) for commissions before final authorization
4

Autoriza (Authorizer)

Final approval authority for travel commissions and budget allocation
5

Jefe de Centro (Center Chief)

Manage all commissions for their research center with administrative oversight
6

Administrador (Administrator)

System administration, user management, and financial processing
7

Director General

Executive oversight with access to all system features and reports

Request-to-Payment Lifecycle

The complete workflow in SMAF follows this lifecycle:

1. Commission Request Creation

Users create a commission request specifying:
  • Project Information: Program, budget line, fiscal year
  • Travel Details: Destination, dates, objective
  • Comisionados: List of personnel traveling
  • Transportation: Mode of transport (terrestrial, aerial, aquatic), vehicle details
  • Budget Items: Travel allowances (viaticos), fuel, tolls, airfare
public class Comision
{
    public string Folio { get; set; }
    public string Fecha_Solicitud { get; set; }
    public string Usuario_Solicita { get; set; }
    public string Proyecto { get; set; }
    public string Lugar { get; set; }
    public string Fecha_Inicio { get; set; }
    public string Fecha_Final { get; set; }
    public string Objetivo { get; set; }
    public string Clase_Trans { get; set; }
    public string Tipo_Trans { get; set; }
    public string Total_Viaticos { get; set; }
    public string Combustible_Solicitado { get; set; }
    public string Peaje { get; set; }
    public string Pasaje { get; set; }
    public string Estatus { get; set; }
}

2. Authorization Workflow

Each commission goes through multiple approval stages:
public void Crear_Tabla(string psPermisos)
{
    if (psPermisos == Dictionary.PERMISO_ADMINISTRADOR_LOCAL)
    {
        clsFuncionesGral.Activa_Paneles(pnlAutoriza, true);
        dplAutoriza.DataSource = MngNegocioComision.Obtiene_Solicitudes(
            Dictionary.AUTORIZA, 
            Session["Crip_Usuario"].ToString(), 
            "1"
        );
        dplAutoriza.DataTextField = Dictionary.DESCRIPCION;
        dplAutoriza.DataValueField = Dictionary.CODIGO;
        dplAutoriza.DataBind();
    }
    else
    {
        // Load both Vobo and Authorization panels
        clsFuncionesGral.Activa_Paneles(pnlVobo, true);
        dplVobo.DataSource = MngNegocioComision.Obtiene_Solicitudes(
            Dictionary.VOBO, 
            Session["Crip_Usuario"].ToString(), 
            "8"
        );
    }
}
The authorization workflow ensures proper budget oversight by requiring approval from:
  1. Responsable de Proyecto - Project budget owner
  2. Vobo - Supervisory approval
  3. Autoriza - Final administrative authorization

3. Expense Verification (Comprobación)

After travel completion, users submit expense reports with fiscal documentation:
public class comprobacion
{
    public string Fecha { get; set; }
    public string Concepto { get; set; }
    public string Importe { get; set; }
    public string Observaciones { get; set; }
    public string Id { get; set; }
}
All expense reports must include valid XML fiscal receipts (CFDI) with UUIDs. The system validates:
  • XML structure (v3.3 or v4.0)
  • Matching PDF documentation
  • Payment methods
  • Receipt amounts vs. authorized budget

4. Payment Processing

Once expenses are verified, payments are processed:
public void Carga_Valores()
{
    dplAnio.DataSource = MngNegocioAnio.ObtieneAnios();
    dplAnio.DataTextField = Dictionary.DESCRIPCION;
    dplAnio.DataValueField = Dictionary.CODIGO;
    dplAnio.DataBind();
    
    dplTipoMinistracion.DataSource = 
        MngNegocioMinistracion.ListaTipoMinistracion("00");
    dplTipoMinistracion.DataValueField = Dictionary.CODIGO;
    dplTipoMinistracion.DataTextField = Dictionary.DESCRIPCION;
    dplTipoMinistracion.DataBind();
    
    clsFuncionesGral.Llena_Lista(
        dplTipoPago, 
        "S e l e c c i o n e |deposito a cuenta"
    );
}

5. Transparency and Reporting

SMAF generates comprehensive reports for transparency requirements:
public static List<Comision> Lista_ComisionesTransparencia(string psYear)
{
    return MngDatosComision.Lista_ComisionesTransparencia(psYear);
}

Key System Capabilities

National and International Travel

The system supports both national and international commissions:
if ((Session["Crip_Rol"].ToString() == dictionary.DIRECTOR_ADMINISTRACION) || 
    (Session["Crip_Rol"].ToString() == dictionary.DIRECTOR_GRAL))
{
    clsFuncionesGral.Llena_Lista(
        dplTipoComision, 
        "= S E L E C C I O N E =|NACIONAL|INTERNACIONAL"
    );
}
else
{
    clsFuncionesGral.Llena_Lista(
        dplTipoComision, 
        "= S E L E C C I O N E =|NACIONAL"
    );
}

Multi-Zone Travel Allowances

Different daily allowance rates based on:
  • Commercial zones (urban areas)
  • Rural zones (field research locations)
  • Navigated days (maritime research)
  • 50km+ travel (additional allowances)

Budget Line Integration

All commissions are linked to:
  • Fiscal year (PEF - Presupuesto de Egresos de la Federación)
  • Program (Programa)
  • Project (Proyecto)
  • Budget line item (Partida Presupuestal)

Session Management

SMAF implements secure session handling:
// User authentication and session creation
Session.Timeout = 30;
Session.LCID = 2057;
Session["Crip_Usuario"] = oUsuario.Usser;
Session["Crip_Nivel"] = oUsuario.Nivel;
Session["Crip_Ubicacion"] = oUsuario.Ubicacion;
Session["Crip_Rol"] = oUsuario.Rol;

// Session timeout check
if (!clsFuncionesGral.IsSessionTimedOut())
{
    // Process request
}
else
{
    Response.Redirect("../Index.aspx", true);
}

Next Steps

Architecture

Learn about the three-tier architecture and technology stack

User Guide

Step-by-step guides for common workflows

Solicitudes

Create and manage commission requests

API Reference

Technical API documentation

Build docs developers (and LLMs) love