Introduction
The SMAF authorization system manages the approval workflow for travel allowance and expense requests within the Mexican Federal Public Administration. The system implements a multi-level authorization process to ensure proper oversight and financial control.
The authorization system is designed to comply with federal regulations governing travel expenses and allowances for public servants.
Authorization Levels
The SMAF system implements a three-tier authorization hierarchy:
1. VoBo (Visto Bueno - Approval)
The VoBo level represents the first authorization stage in the workflow.
Key Responsibilities:
Review and validate travel request details
Verify project information and budget allocation
Approve or modify requested dates and allowances
Add comments and observations
Forward approved requests to the authorization stage
Status Code: 8
Workflow Actions:
Review commission details including dates, destination, and objective
Validate authorized period and adjust days if necessary
Set payment zones and per diem rates
Approve transportation and fuel allowances
Manage multi-traveler commissions
// Source: Comision_Aut.aspx.cs:686-750
if ( psOpcion == Dictionary . AUTORIZA )
{
detalleComision = MngNegocioComision . Detalle_Comision ( psFolio , psUbicacion , "" , "" );
btnAccion . Text = "AUTORIZAR" ;
Label8 . Text = clsFuncionesGral . ConvertMayus ( "Autorización de comisión número : " )
+ detalleComision . Folio ;
}
else // VOBO
{
btnAccion . Text = " Ministrar " ;
detalleComision = MngNegocioComision . Detalle_Comision ( psFolio , psUbicacion , "" , "8" );
Label8 . Text = clsFuncionesGral . ConvertMayus ( "Visto Bueno de comisión número : " )
+ detalleComision . Folio ;
}
2. Approver (Autorizador - Authorization)
The Approver level handles the final authorization before financial disbursement.
Key Responsibilities:
Final review of VoBo-approved requests
Authorize budget items and payment methods
Generate official authorization documents
Update commission status to approved
Initiate payment processing workflow
Status Codes:
1 - Pending Authorization
5 - Authorized (no cash disbursements)
9 - Authorized (with cash disbursements)
Special Capabilities:
Modify authorized periods
Adjust fuel and toll allowances
Assign vehicles and transportation
Process international travel rates
Handle mixed per diem types (rural/commercial)
Authorization Status Logic
// Source: Comision_Aut.aspx.cs:3649-3663
if (( objComision . Zona_Comercial == "0" ) &
(( objComision . Combustible_Efectivo == Dictionary . NUMERO_CERO ) &
( objComision . Peaje == Dictionary . NUMERO_CERO ) &
( objComision . Pasaje == Dictionary . NUMERO_CERO )))
{
objComision . Estatus = "5" ; // Authorized without cash disbursement
}
else if (( objComision . Zona_Comercial == "15" ) &
(( objComision . Combustible_Efectivo == Dictionary . NUMERO_CERO ) &
( objComision . Peaje == Dictionary . NUMERO_CERO ) &
( objComision . Pasaje == Dictionary . NUMERO_CERO )))
{
objComision . Estatus = "5" ; // Special zone without cash
}
else
{
objComision . Estatus = "9" ; // Authorized with cash disbursement
}
3. Local Administrator (Administrador Local)
Local Administrators have elevated privileges combining both VoBo and Authorization capabilities.
Special Permissions:
Can directly authorize without VoBo stage
Bypass standard workflow for urgent requests
Manage commission cancellations
Access administrative configuration settings
Process and ministrar (disburse) funds
Permission Code: PERMISO_ADMINISTRADOR_LOCAL
Administrator Permission Check
// Source: Comision_Aut.aspx.cs:54-83
public void Crear_Tabla ( string psPermisos )
{
if ( psPermisos == Dictionary . PERMISO_ADMINISTRADOR_LOCAL )
{
// Administrator can authorize directly
clsFuncionesGral . Activa_Paneles ( pnlAutoriza , true );
dplAutoriza . DataSource = MngNegocioComision . Obtiene_Solicitudes (
Dictionary . AUTORIZA ,
Session [ "Crip_Usuario" ]. ToString (),
"1" );
// VoBo panel is hidden for administrators
clsFuncionesGral . Activa_Paneles ( pnlVobo , false );
}
else
{
// Regular users see both panels
clsFuncionesGral . Activa_Paneles ( pnlAutoriza , true );
clsFuncionesGral . Activa_Paneles ( pnlVobo , true );
}
}
Role Responsibilities
VoBo Reviewers
Primary Functions:
Receive new commission requests (Status: Pending VoBo)
Validate request completeness and accuracy
Modify commission parameters if needed
Add observations for the requestor
Forward to authorization or reject
Interface Capabilities:
Edit authorized periods
Adjust days to be paid
Set payment zones (commercial/rural)
Configure per diem types (tariff-based or standardized)
Manage transportation and fuel requests
Add additional travelers to commissions
VoBo reviewers must ensure that authorized periods do not exceed the requested dates without proper justification.
Authorizers
Primary Functions:
Review VoBo-approved requests
Final budget authorization
Generate official commission documents
Update status to authorized
Cannot modify most fields (read-only after VoBo)
Restrictions:
Cannot change authorized periods (set by VoBo)
Cannot modify payment zones
Cannot add/remove travelers
Can only add final observations
Field Restrictions by Role
// Source: Comision_Aut.aspx.cs:1163-1239
if (( psOpcion == Dictionary . VOBO ) |
( psPermisosAdmin == Dictionary . PERMISO_ADMINISTRADOR_LOCAL ))
{
// VoBo or Admin: Full edit capabilities
pnlPeriodoautorizado . Enabled = true ;
chkMedioDia . Enabled = true ;
dplZonas . Enabled = true ;
dplPagos . Enabled = true ;
pnlAgregaComisionados . Visible = true ;
GridView1 . Enabled = true ;
}
else // Authorizer only
{
// Authorizer: Read-only mode
pnlPeriodoautorizado . Enabled = false ;
chkMedioDia . Enabled = false ;
dplZonas . Enabled = false ;
dplPagos . Enabled = false ;
pnlAgregaComisionados . Visible = false ;
GridView1 . Enabled = false ;
}
Local Administrators
Primary Functions:
All VoBo capabilities
All Authorizer capabilities
Direct authorization without VoBo stage
Cancel/reject commissions at any stage
Override system validations when justified
Special Actions:
Delete travelers from multi-person commissions
Modify vehicle assignments
Process urgent requests
Handle special permission cases
Authorization Hierarchy
The system automatically determines the approval chain based on the requester’s role and administrative unit:
Hierarchical Approval Logic
// Source: Comision_Aut.aspx.cs:354-356
Usuario objUsuario = MngNegocioUsuarios . Obten_Datos ( dplComisionados . SelectedValue . ToString (), true );
Vobo_Aut = clsFuncionesGral . Obtiene_Jerarquico ( objUsuario );
// Vobo_Aut[0] = VoBo approver user
// Vobo_Aut[1] = Final authorizer user
System Validations
The authorization system enforces several business rules:
Annual Day Limits
Commissioned employees have annual limits on travel days according to federal regulations.
// Source: Comision_Aut.aspx.cs:331-344
double totalDias = clsFuncionesGral . Convert_Double (
MngNegocioComision . Dias_Acumulados ( dplComisionados . SelectedValue . ToString (), year ));
if ( totalDias >= clsFuncionesGral . Convert_Double (
clsFuncionesGral . Convert_Decimales ( Dictionary . DIAS_ANUALES )))
{
// Check for special permission from Official Mayor
lsPermisosEspeciales = MngNegocioPermisos . ObtienePermisos (
dplComisionados . SelectedValue . ToString (), "OFMAY" );
if ( lsPermisosEspeciales != "OFMAY" )
{
ClientScript . RegisterStartupScript ( this . GetType (), "Inapesca" ,
"alert('Employee has exceeded annual travel days limit');" , true );
return ;
}
}
Pending Reports
Employees with pending commission reports cannot be added to new commissions unless they have special authorization.
Pending Report Validation
// Source: Comision_Aut.aspx.cs:264-327
string ultimaFechaComision = MngNegocioComision . Obtiene_Max_Comision_Comprobar (
dplComisionados . SelectedValue . ToString ());
if ( ultimaFechaComision != null )
{
DateTime fechamasdiez = Convert . ToDateTime ( ultimaFechaComision ). AddDays ( 10 );
bool DIFERENCIA = ( Convert . ToDateTime ( lsHoy ) > fechamasdiez );
if ( DIFERENCIA )
{
// Check for special VIAT permission
if ( lsPermisosEspecialesVIAT != "VIAT" )
{
ClientScript . RegisterStartupScript ( this . GetType (), "Inapesca" ,
"alert('Employee has pending commission report exceeding 10-day grace period');" ,
true );
return ;
}
}
}
Best Practices
Carefully review all request details before approval
Verify budget availability for the project
Ensure authorized dates align with project schedules
Add clear observations if modifications are made
Check employee eligibility (no pending reports)
Verify VoBo approval completeness
Confirm budget codes are correct
Review all observations from VoBo stage
Generate authorization documents promptly
Ensure payment method is properly configured
Use direct authorization only when justified
Document reasons for workflow bypasses
Monitor pending authorizations regularly
Process cancellations with proper observations
Review special permission requests carefully
Approval Workflow Detailed workflow from submission to final authorization
Commission Requests Learn about creating and submitting commission requests