funciones_servicios_dart_flutter_mobile

A comprehensive calculation engine for transaction valuation and tax calculations in Flutter mobile applications. This package handles critical business functions including price calculations, volume conversions, tax calculations (IVA, internal taxes), and fiscal compliance for invoicing systems.

Features

  • Price Calculations: Calculate unit prices based on volume units from price lists
  • Taxable Base Calculations: Compute taxable base amounts for transactions
  • Tax Calculations: Handle IVA, internal taxes, and other fiscal requirements
  • Volume Conversions: Support for sales, production, and stock volume calculations
  • Multi-currency Support: Handle transactions with multiple currencies via exchange rates
  • Hash-based Optimization: SHA-256 hashing for change detection to avoid redundant calculations
  • Schema-driven Architecture: Dynamic field mapping via keyDesarrollo for flexible configuration

Installation

Add this package to your pubspec.yaml:

dependencies:
  funciones_servicios_dart_flutter_mobile: ^1.0.0

Then run:

flutter pub get

Usage

Basic Setup

import 'package:funciones_servicios_dart_flutter_mobile/funciones_servicios_dart_flutter_mobile.dart';

// Initialize the service (singleton pattern)
final funcionesServicios = FuncionesServicios(apiRest: apiRest);

// Initialize functions with schema
await funcionesServicios.initFunciones(
  coleccion: 'transaccion',
  funciones: [
    Funciones.calcularPrecioUnitarioxUnidadVolumen.name,
    Funciones.calcularBaseImponible.name,
    Funciones.calcularImpuestos.name,
  ],
  esquema: mySchema,
);

Available Functions

Function Description
calcularPrecioUnitarioxUnidadVolumen Calculates unit price based on volume units from price lists
calcularBaseImponible Calculates taxable base amount
calcularImpuestos Calculates taxes (IVA, internal taxes) with fiscal detail
calcularVolumenVenta Calculates sales volume
calcularVolumenProduccion Calculates production volume
calcularVolumenStock Calculates stock volume using default product unit

For invoicing transactions, execute functions in this order:

  1. calcularPrecioUnitarioxUnidadVolumen
  2. calcularBaseImponible
  3. calcularImpuestos

Executing Functions

// Update specific item
final result = await funcionesServicios.ejecutaFuncionActualizarItems(
  coleccion: 'transaccion',
  funciones: funciones,
  data: transactionData,
  accion: AccionFunServicio.actualizar,
  idItemData: itemId,
);

// Recalculate entire transaction
final result = await funcionesServicios.ejecutaFuncionesEnTodoElRegistro(
  coleccion: 'transaccion',
  funciones: funciones,
  data: transactionData,
);

// Recalculate totals only (for save operations)
final result = await funcionesServicios.ejecutaFuncionesGuardar(
  coleccion: 'transaccion',
  funciones: funciones,
  data: transactionData,
);

Hash-based Change Detection

Before editing, establish a hash to track changes:

await funcionesServicios.estableceHash(
  coleccion: 'transaccion',
  funciones: funciones,
  data: transactionData,
  accion: AccionFunServicio.modificar,
  idItem: itemId,
);

Schema Configuration

The package requires proper schema configuration with keyDesarrollo mappings. See the package documentation for detailed schema setup instructions.

Platform Support

Platform Support
Android
iOS

Dependencies

This package depends on:

  • api_rest_flutter_mobile - REST API integration
  • flutter_models_provider - Data models and ObjectBox integration
  • flutter_utils_providers - Utility functions for schema navigation
  • crypto - SHA-256 hashing for change detection
  • uuid - UUID generation

License

This project is licensed under the MIT License - see the LICENSE file for details.