generaTransaccionDestino static method
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
idFuncionProcesoes el id del proceso que se esta ejecutandoidColecciones la coleccion de los comprobantes de la lista origen la lista transaccionesidTransacciones 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;
}