Skip to main content

Payment Processing Overview

The payment module in SMAF handles the disbursement of travel allowances (viáticos) to employees after their travel assignments have been approved. This module integrates with fund allocations (ministraciones) to ensure proper budget tracking and financial control.

Payment Types

SMAF supports payments for multiple travel expense categories:

1. Viáticos (Travel Allowances)

Daily allowances for meals and incidental expenses during official travel.
if (clsFuncionesGral.Convert_Double(DetalleComision.Total_Viaticos) > 0)
{
    clsFuncionesGral.Activa_Paneles(pnlViaticos, true);
}

2. Combustible (Fuel)

Reimbursement for fuel expenses when using personal or official vehicles.
if (clsFuncionesGral.Convert_Double(DetalleComision.Combustible_Efectivo) > 0)
{
    clsFuncionesGral.Activa_Paneles(pnlCombustible, true);
}

3. Peajes (Tolls)

Reimbursement for highway toll expenses.
if (clsFuncionesGral.Convert_Double(DetalleComision.Peaje) > 0)
{
    clsFuncionesGral.Activa_Paneles(pnlPeaje, true);
}

4. Pasajes (Transportation)

Reimbursement for public transportation, taxis, or other travel costs.
if (clsFuncionesGral.Convert_Double(DetalleComision.Pasaje) > 0)
{
    clsFuncionesGral.Activa_Paneles(pnlPasajes, true);
}

5. Singladuras (Maritime Days)

Special allowance for maritime field work.
if (clsFuncionesGral.Convert_Double(DetalleComision.Singladuras) > 0)
{
    clsFuncionesGral.Activa_Paneles(pnlSingladuras, true);
}

Payment Methods

The system supports two payment methods configured through the dplTipoPago dropdown:
cheque
string
Physical check issued to the employee
deposito a cuenta
string
Direct deposit to employee’s bank account
clsFuncionesGral.Llena_Lista(dplTipoPago, 
    clsFuncionesGral.ConvertMayus("cheque|deposito a cuenta"));

Bank Reference Generation

Each payment requires a unique bank reference (referencia bancaria) for tracking and reconciliation:
1

Enter Bank Information

Input destination bank details:
  • Bank name (txtBanco)
  • Account number (txtCuenta)
  • CLABE interbank code (txtClabe)
2

Generate Reference

Create a unique bank reference number in txtReferencia
3

Specify Payment Date

Set the payment date using the calendar control (txtFecha)
if ((txtReferencia.Text == null) | (txtReferencia.Text == ""))
{
    ClientScript.RegisterStartupScript(this.GetType(), "Inapesca", 
        "alert('Referencia bancaria Obligatorio');", true);
    return;
}
else
{
    lsReferencia = txtReferencia.Text;
}

Payment Workflow

The payment process follows these stages:
  1. Commission Selection: Select an approved travel assignment (comisión) awaiting payment
  2. Ministracion Association: Link the payment to an existing or new fund allocation
  3. Amount Entry: Enter payment amounts for each expense category
  4. Bank Details: Provide bank account and reference information
  5. Validation: System validates amounts against requested expenses
  6. Registration: Payment is recorded and status updated
Payments can only be processed for commissions that have been approved and are in financial pending status (Financieros != "2").

Payment Status Tracking

The system tracks payment status through the ComisionDetalle entity:
ComisionDetalle oCdetalle = MngNegocioComisionDetalle.Obtiene_detalle(
    DetalleComision.Archivo, 
    DetalleComision.Comisionado, 
    DetalleComision.Ubicacion_Comisionado, 
    Year
);

if (oCdetalle.Financieros == "2")
{
    // Commission already paid
    ClientScript.RegisterStartupScript(this.GetType(), "Inapesca", 
        "alert('Esta Comision ya fue pagada');", true);
    return;
}

Status Codes

  • "0" - Pending payment
  • "1" - Partial payment
  • "2" - Fully paid
Once a commission is marked as fully paid (Financieros = "2"), additional payments can only be made through the reimbursement module.

Access Control

Payment processing requires specific role permissions:
if ((Session["Crip_Rol"].ToString() == Dictionary.ADMINISTRADOR) | 
    (Session["Crip_Rol"].ToString() == Dictionary.JEFE_CENTRO))
{
    // Load commissions for center administrator
    gvFiscales.DataSource = MngNegocioPago.Comisiones_Pagar(
        Session["Crip_Ubicacion"].ToString(), Year);
    gvFiscales.DataBind();
}

Next Steps

Payment Processing

Learn how to process travel allowance payments step-by-step

Fund Allocations

Understand how ministraciones work with payments

Build docs developers (and LLMs) love