generaTransaccionDestino static method

Future<List<Map<String, dynamic>>> generaTransaccionDestino({
  1. required String idProceso,
  2. required List<Map<String, dynamic>> transacciones,
  3. required Map<String, dynamic> paramsNewValue,
  4. required Map<String, dynamic> esquemaOrigen,
  5. required Map<String, dynamic> esquemaDestino,
})

Funcion Utilizada para generar una nueva lista de mapas con el formato que pose el esquemaDestinto.

Esta funcion recibe los siguientes parametros: idProceso es el id del proceso que se esta ejecutando para procesar los comprobantes transacciones es una lista de map que se van a tratar ejemplo

[{"idServer": "66c60b4a69856c707b32ecb4",
  "idMobile": ,
  "eTransfer": ,
  "estado": "A",
  "coleccion": "transaccion",
  "idAuth": "654b6ec0ae81a97e21712425",
  "coleccionAuth": "genesisBus",
  "data": {"fecha": "2024-08-21T12:43:35.000Z",
         "idCliente": "66c5be905f4634d5db3e13dc",
         "idCondicionVenta": "66c5c2b95f4634d5db3e13e6",
         "idVendedor": ,
         "detalle": [{"id": 9c3c554a-fdae-4f9b-8466-8f8b73c6e213,
                    "estado": A,
                    "idProducto": "66c5c38d5f4634d5db3e13e9",
                    "precioUnitario": 100,
                    "idMoneda": "66c48da585c1fd82a184e59d",
                    "cantidad": 100,
                    "descuento": 10,
                    "fiscal": {"importeBaseImponible": 9000,
                             "importeImpInterno": 0,
                             "importeTasa": 1890, "importeOtros": 405}}],
         "monedaComprobante": "66c48da585c1fd82a184e59d",
         "idComprobante": "66c500d35f4634d5db3e13d6",
         "detalleFiscal": [{"id":" 54583d2e-71ac-4b70-9289-d30f6978f90f",
                          "estado": "A",
                          "idImpuestoPercibir": "66c4950a5485549d07d81b5c",
                          "totalBaseImponible": 9000, "totalTasa": 1890}],
         "numeroComprobante": 8,
         "idCliente_dynamicValue": "Juan Perez",
         "idCondicionVenta_dynamicValue": "Contado",
         "monedaComprobante_dynamicValue": "Peso Argentino",
         "idComprobante_dynamicValue": "Factura A 0001"},
   "creadoEl": 20240830161502222,
   "lstIdServer": ["66c60b4a69856c707b32ecb4"]},
   {"idServer": 66c6126069856c707b32ecb6,
    "idMobile": ,
    "eTransfer": ,
    "estado": "A",
    "coleccion": "transaccion",
    "idAuth": "654b6ec0ae81a97e21712425",
    "coleccionAuth": "genesisBus",
    "data": {......},
    "creadoEl": 20240830161516753,
    "lstIdServer": ["66c6126069856c707b32ecb6", "66c79a9b69856c707b32ecce"]}
]

paramsNewValue es un mapa que contiene los valores que se van a establecer en la nueva lista de mapas, es decir son los key que posee la colección destino que se van a establecer con valores especificos

paramsNewValue: {
    "idCondicionVenta": "66c5c2ae5f4634d5db3e13e4",
    "idListaPrecio": "66dc2773725da7be803e9d85"
},

esquemaOrigen es el esquema de la colección origen esquemaDestino es el esquema de la colección destino

*** el proceso funciona de esta manera se navega en la lista de transacciones se toman todos los key que coinciden con los key de las transaccion destino y se le pasa su valor correspondiente, si el key no existe en la transaccion destino este se descarta y por ultimo se actualiza la tansaccion destino con los nuevos valores establecidos en paramsNewValue

*** el proceso al final a cada registro generado le agrega los siguientes objetos dentro del arrayObject origen keyDesarrollo:> keyOrigen

  • idFuncionProceso es el id del proceso que se esta ejecutando
  • idColeccion es la coleccion de los comprobantes de la lista origen la lista transacciones
  • idTransaccion es un array con todos los id de los comprobantes de de las transacciones origen que generaron el nuevo registro

Implementation

static Future<List<Map<String, dynamic>>> generaTransaccionDestino({
  required String idProceso,
  required List<Map<String, dynamic>> transacciones,
  required Map<String, dynamic> paramsNewValue,
  required Map<String, dynamic> esquemaOrigen,
  required Map<String, dynamic> esquemaDestino,
}) async {
  List<Map<String, dynamic>> transaccionesDestino = [];
  for (final transaccion in transacciones) {
    if (transaccion['lstIdServer'] == null) continue;
    final newDataTransaccionDestino = <String, dynamic>{
      ...FlutterUtilsProvider.generaMapaConCampos(esquemaDestino, false),
    };
    _estableceNewValue(
        parent: '',
        data: newDataTransaccionDestino[EnvironmentApiRest.data],
        paramsNewValue: paramsNewValue);
    await _actualizaDataTransaccionDestino(
      dataInTransaccionOrigen: transaccion[EnvironmentApiRest.data],
      dataInTransaccionDestino:
          newDataTransaccionDestino[EnvironmentApiRest.data],
      paramsNewValue: paramsNewValue,
      esquemaOrigen: esquemaOrigen,
      esquemaDestino: esquemaDestino,
    );

    _estableceValorOrigen(
      esquemaDestino: esquemaDestino,
      idProceso: idProceso,
      coleccionOrigen: transacciones.first[EnvironmentApiRest.coleccion],
      lstIdServer: transaccion['lstIdServer'],
      newDataTransaccionDestino: newDataTransaccionDestino,
    );

    transaccionesDestino.add(newDataTransaccionDestino);
  }
  return transaccionesDestino;
}