Esempio n. 1
0
 private void Log(string status, int index, ConsumoCabecera cons)
 {
     lblResult.Text += string.Format(Result,
                                     new[] { status,
                                             " INDICE: " + index,
                                             " Vehiculo = " + ((cons != null && cons.Vehiculo != null) ? cons.Vehiculo.ToString() : "VACIO"),
                                             " Proveedor = " + ((cons != null && cons.Proveedor != null) ? cons.Proveedor.ToString() : "VACIO"),
                                             " Deposito = " + ((cons != null && cons.Deposito != null) ? cons.Deposito.ToString() : "VACIO"),
                                             " Deposito Destino = " + ((cons != null && cons.DepositoDestino != null) ? cons.DepositoDestino.ToString() : "VACIO") });
 }
Esempio n. 2
0
        public ConsumoCCVo(ConsumoCabecera consumo, int centroDeCostoId)
        {
            Id            = consumo.Id;
            Fecha         = consumo.Fecha.ToDisplayDateTime();
            KmDeclarados  = consumo.KmDeclarados;
            NumeroFactura = consumo.NumeroFactura;
            ImporteTotal  = consumo.ImporteTotal;
            Proveedor     = consumo.Proveedor != null
                            ? consumo.Proveedor.ToString()
                            : consumo.Deposito != null
                                  ? consumo.Deposito.ToString()
                                  : string.Empty;

            Vehiculo = consumo.Vehiculo != null
                           ? consumo.Vehiculo.ToString()
                           : consumo.DepositoDestino != null
                                 ? consumo.DepositoDestino.ToString()
                                 : string.Empty;

            var dao           = new DAOFactory();
            var centroDeCosto = dao.CentroDeCostosDAO.FindById(centroDeCostoId);

            CentroDeCosto = centroDeCosto != null ? centroDeCosto.Descripcion : string.Empty;
        }
Esempio n. 3
0
 private static bool SobranDatosCabecera(ConsumoCabecera consumo)
 {
     return((consumo.Deposito != null && consumo.Proveedor != null) || (consumo.Vehiculo != null && consumo.DepositoDestino != null));
 }
Esempio n. 4
0
 private static bool FaltanDatosCabecera(ConsumoCabecera consumo)
 {
     return((consumo.Deposito == null && consumo.Proveedor == null) || (consumo.Vehiculo == null && consumo.DepositoDestino == null));
 }
Esempio n. 5
0
        protected void ImportEssoCard(List <ImportRow> rows)
        {
            var procesados  = 0;
            var erroneos    = 0;
            var sinProcesar = 0;
            var index       = 0;
            var start       = DateTime.Now.Ticks;

            lblResult.Text = "";

            foreach (var row in rows)
            {
                using (var transaction = SmartTransaction.BeginTransaction())
                {
                    try
                    {
                        index++;
                        var fecha   = DateTime.Parse(GetValue(row, Fields.Fecha.Value));
                        var horario = GetValue(row, Fields.Hora.Value);
                        if (horario.Length == 5)
                        {
                            horario = string.Concat("0", horario);
                        }
                        var hora = int.Parse(horario.Substring(0, 2));
                        var min  = int.Parse(horario.Substring(2, 2));
                        fecha = fecha.AddHours(hora).AddMinutes(min).ToDataBaseDateTime();

                        var patente      = GetValue(row, Fields.Driver.Value);
                        var kmDeclarados = ValidateDouble(GetValue(row, Fields.Odometro.Value), "");
                        var factura      = GetValue(row, Fields.NroAut.Value);

                        var vehiculo  = DAOFactory.CocheDAO.GetByPatente(new[] { cbEmpresa.Selected }, new[] { cbLinea.Selected }, patente);
                        var proveedor = DAOFactory.ProveedorDAO.GetByDescripcion(new[] { cbEmpresa.Selected }, new[] { cbLinea.Selected }, "Generico");

                        var consumo = DAOFactory.ConsumoCabeceraDAO.FindByDatos(fecha, kmDeclarados, factura, vehiculo != null ? vehiculo.Id : -1,
                                                                                proveedor != null ? proveedor.Id : -1, -1, -1);

                        if (consumo == null ||
                            consumo.Id == 0)
                        {
                            consumo = new ConsumoCabecera
                            {
                                Fecha          = fecha,
                                KmDeclarados   = kmDeclarados,
                                NumeroFactura  = factura,
                                ImporteTotal   = 0.0,
                                Estado         = ConsumoCabecera.Estados.Pagado,
                                Vehiculo       = vehiculo,
                                Proveedor      = proveedor,
                                TipoMovimiento = ConsumoCabecera.TiposMovimiento.ProveedorAVehiculo
                            };

                            if (FaltanDatosCabecera(consumo))
                            {
                                sinProcesar++;
                                Log("FALTAN DATOS", index, consumo);
                                continue;
                            }

                            if (SobranDatosCabecera(consumo))
                            {
                                sinProcesar++;
                                Log("SOBRAN DATOS", index, consumo);
                                continue;
                            }

                            if (!DAOFactory.ConsumoCabeceraDAO.IsFacturaUnique(consumo.NumeroFactura, consumo.Proveedor.Id, -1, consumo.Id))
                            {
                                sinProcesar++;
                                Log("FACTURA EXISTENTE", index, consumo);
                                continue;
                            }
                        }

                        var cantidad          = GetValue(row, Fields.Cantidad.Value);
                        var importeTotal      = GetValue(row, Fields.Valor.Value);
                        var insumoDescripcion = GetValue(row, Fields.Prod.Value).Trim();

                        var insumo = DAOFactory.InsumoDAO.GetByDescripcion(new[] { cbEmpresa.Selected }, new[] { cbLinea.Selected }, new[] { -1 }, insumoDescripcion);

                        double cant, tot;

                        if (double.TryParse(cantidad, out cant) &&
                            double.TryParse(importeTotal, out tot))
                        {
                            var unit = tot / cant;

                            var detalle = new ConsumoDetalle {
                                Cantidad = cant, ImporteUnitario = unit, ImporteTotal = tot, Insumo = insumo
                            };
                            consumo.ImporteTotal = consumo.ImporteTotal + detalle.ImporteTotal;


                            DAOFactory.ConsumoCabeceraDAO.SaveOrUpdate(consumo);

                            if (FaltanDatosDetalle(detalle))
                            {
                                sinProcesar++;
                                Log("FALTAN DATOS", index, consumo);
                                transaction.Rollback();
                                continue;
                            }

                            try
                            {
                                detalle.ConsumoCabecera = consumo;
                                consumo.Detalles.Add(detalle);
                                DAOFactory.ConsumoCabeceraDAO.SaveOrUpdate(consumo);

                                var oInsumo = detalle.Insumo;
                                oInsumo.ValorReferencia = detalle.ImporteUnitario;
                                DAOFactory.InsumoDAO.SaveOrUpdate(oInsumo);

                                procesados++;

                                if (vehiculo != null)
                                {
                                    DAOFactory.MovOdometroVehiculoDAO.ResetByVehicleAndInsumo(vehiculo, detalle.Insumo);
                                }

                                transaction.Commit();
                            }
                            catch (Exception)
                            {
                                erroneos++;
                                Log("FILA ERRONEA", index, consumo);
                                transaction.Rollback();
                            }
                        }
                        else
                        {
                            erroneos++;
                            Log("FILA ERRONEA", index, consumo);
                        }
                    }
                    catch (Exception)
                    {
                        erroneos++;
                        Log("FILA ERRONEA", index, null);
                    }
                }
            }

            const int totalWidth = 200;
            var       percent    = index * 100 / rows.Count;

            litProgress.Text = string.Format(@"<div style='margin: auto; border: solid 1px #999999; background-color: #FFFFFF; width: {0}px; height: 10px;'>
                <div style='background-color: #0000AA; width: {1}px; height: 10px; font-size: 8px; color: #CCCCCC;'>{2}%</div>
                </div>", totalWidth, percent * totalWidth / 100, percent);
            lblDirs.Text     = string.Format(Reporte,
                                             procesados + erroneos,
                                             rows.Count,
                                             procesados,
                                             rows.Count > 0 ? (procesados * 100.0 / rows.Count).ToString("0.00") : "0.00",
                                             erroneos,
                                             rows.Count > 0 ? (erroneos * 100.0 / rows.Count).ToString("0.00") : "0.00",
                                             sinProcesar,
                                             rows.Count > 0 ? (sinProcesar * 100.0 / rows.Count).ToString("0.00") : "0.00",
                                             TimeSpan.FromTicks(DateTime.Now.Ticks - start));
            panelProgress.Visible = true;
        }
Esempio n. 6
0
        protected void ImportDefault(List <ImportRow> rows)
        {
            var procesados  = 0;
            var erroneos    = 0;
            var sinProcesar = 0;
            var index       = 0;
            var start       = DateTime.Now.Ticks;

            lblResult.Text = "";

            foreach (var row in rows)
            {
                using (var transaction = SmartTransaction.BeginTransaction())
                {
                    try
                    {
                        index++;
                        var fecha                      = DateTime.Parse(GetValue(row, Fields.Fecha.Value)).ToDataBaseDateTime();
                        var patente                    = GetValue(row, Fields.Vehiculo.Value);
                        var kmDeclarados               = ValidateDouble(GetValue(row, Fields.KmDeclarados.Value), "");
                        var factura                    = GetValue(row, Fields.Factura.Value);
                        var proveedorDescripcion       = GetValue(row, Fields.Proveedor.Value).Trim();
                        var depositoDescripcion        = GetValue(row, Fields.Deposito.Value).Trim();
                        var depositoDestinoDescripcion = GetValue(row, Fields.DepositoDestino.Value).Trim();

                        Coche     vehiculo        = null;
                        Proveedor proveedor       = null;
                        Deposito  deposito        = null;
                        Deposito  depositoDestino = null;

                        if (patente != string.Empty)
                        {
                            vehiculo = DAOFactory.CocheDAO.GetByPatente(new[] { cbEmpresa.Selected }, new[] { cbLinea.Selected }, patente);
                        }
                        if (proveedorDescripcion != string.Empty)
                        {
                            proveedor = DAOFactory.ProveedorDAO.GetByDescripcion(new[] { cbEmpresa.Selected }, new[] { cbLinea.Selected }, proveedorDescripcion);
                        }
                        if (depositoDescripcion != string.Empty)
                        {
                            deposito = DAOFactory.DepositoDAO.GetByDescripcion(new[] { cbEmpresa.Selected }, new[] { cbLinea.Selected }, depositoDescripcion);
                        }
                        if (depositoDestinoDescripcion != string.Empty)
                        {
                            depositoDestino = DAOFactory.DepositoDAO.GetByDescripcion(new[] { cbEmpresa.Selected }, new[] { cbLinea.Selected },
                                                                                      depositoDestinoDescripcion);
                        }

                        var consumo = DAOFactory.ConsumoCabeceraDAO.FindByDatos(fecha, kmDeclarados, factura, vehiculo != null ? vehiculo.Id : -1,
                                                                                proveedor != null ? proveedor.Id : -1, deposito != null ? deposito.Id : -1, depositoDestino != null ? depositoDestino.Id : -1);

                        if (consumo == null ||
                            consumo.Id == 0)
                        {
                            short tipoMovimiento = 0;

                            if (deposito != null &&
                                depositoDestino != null)
                            {
                                tipoMovimiento = ConsumoCabecera.TiposMovimiento.DepositoADeposito;
                            }
                            if (deposito != null &&
                                vehiculo != null)
                            {
                                tipoMovimiento = ConsumoCabecera.TiposMovimiento.DepositoAVehiculo;
                            }
                            if (proveedor != null &&
                                depositoDestino != null)
                            {
                                tipoMovimiento = ConsumoCabecera.TiposMovimiento.ProveedorADeposito;
                            }
                            if (proveedor != null &&
                                vehiculo != null)
                            {
                                tipoMovimiento = ConsumoCabecera.TiposMovimiento.ProveedorAVehiculo;
                            }

                            consumo = new ConsumoCabecera
                            {
                                Fecha           = fecha,
                                KmDeclarados    = kmDeclarados,
                                NumeroFactura   = factura,
                                ImporteTotal    = 0.0,
                                Estado          = ConsumoCabecera.Estados.Pagado,
                                Vehiculo        = vehiculo,
                                Proveedor       = proveedor,
                                Deposito        = deposito,
                                DepositoDestino = depositoDestino,
                                TipoMovimiento  = tipoMovimiento
                            };

                            if (FaltanDatosCabecera(consumo))
                            {
                                sinProcesar++;
                                Log("FALTAN DATOS", index, consumo);
                                continue;
                            }

                            if (SobranDatosCabecera(consumo))
                            {
                                sinProcesar++;
                                Log("SOBRAN DATOS", index, consumo);
                                continue;
                            }

                            if (
                                !DAOFactory.ConsumoCabeceraDAO.IsFacturaUnique(consumo.NumeroFactura, consumo.Proveedor != null ? consumo.Proveedor.Id : -1,
                                                                               consumo.Deposito != null ? consumo.Deposito.Id : -1, consumo.Id))
                            {
                                sinProcesar++;
                                Log("FACTURA EXISTENTE", index, consumo);
                                continue;
                            }
                        }

                        var cantidad          = GetValue(row, Fields.Cantidad.Value);
                        var importeUnitario   = GetValue(row, Fields.ImporteUnitario.Value);
                        var importeTotal      = GetValue(row, Fields.ImporteTotal.Value);
                        var insumoDescripcion = GetValue(row, Fields.Insumo.Value).Trim();

                        var insumo = DAOFactory.InsumoDAO.GetByDescripcion(new[] { cbEmpresa.Selected }, new[] { cbLinea.Selected }, new[] { -1 }, insumoDescripcion);

                        double cant, unit, tot;

                        if (double.TryParse(cantidad, out cant) &&
                            double.TryParse(importeUnitario, out unit) &&
                            double.TryParse(importeTotal, out tot))
                        {
                            if (tot > 0 &&
                                cant > 0)
                            {
                                unit = tot / cant;
                            }
                            else if (tot == 0 &&
                                     unit > 0 &&
                                     cant > 0)
                            {
                                tot = unit * cant;
                            }

                            var detalle = new ConsumoDetalle {
                                Cantidad = cant, ImporteUnitario = unit, ImporteTotal = tot, Insumo = insumo
                            };
                            consumo.ImporteTotal = consumo.ImporteTotal + detalle.ImporteTotal;


                            DAOFactory.ConsumoCabeceraDAO.SaveOrUpdate(consumo);

                            if (FaltanDatosDetalle(detalle))
                            {
                                sinProcesar++;
                                Log("FALTAN DATOS", index, consumo);
                                transaction.Rollback();
                                continue;
                            }

                            if (deposito != null &&
                                SinStock(deposito.Id, insumo.Id, cant))
                            {
                                sinProcesar++;
                                Log("SIN STOCK", index, consumo);
                                transaction.Rollback();
                                continue;
                            }

                            try
                            {
                                detalle.ConsumoCabecera = consumo;
                                consumo.Detalles.Add(detalle);
                                DAOFactory.ConsumoCabeceraDAO.SaveOrUpdate(consumo);

                                var oInsumo = detalle.Insumo;
                                oInsumo.ValorReferencia = detalle.ImporteUnitario;
                                DAOFactory.InsumoDAO.SaveOrUpdate(oInsumo);

                                if (consumo.Deposito != null)
                                {
                                    var stock = DAOFactory.StockDAO.GetByDepositoAndInsumo(consumo.Deposito.Id, detalle.Insumo.Id);
                                    stock.Cantidad -= detalle.Cantidad;

                                    DAOFactory.StockDAO.SaveOrUpdate(stock);

                                    if (stock.AlarmaActiva)
                                    {
                                        var msgSaver = new MessageSaver(DAOFactory);

                                        if (stock.Cantidad < stock.StockCritico)
                                        {
                                            msgSaver.Save(MessageIdentifier.StockCritic.ToString("d"), consumo.Vehiculo, consumo.Fecha, null,
                                                          "Alarma Stock Crítico");
                                        }
                                        else if (stock.Cantidad < stock.PuntoReposicion)
                                        {
                                            msgSaver.Save(MessageIdentifier.StockReposition.ToString("d"), consumo.Vehiculo, consumo.Fecha, null,
                                                          "Alarma Reposición de Stock");
                                        }
                                    }
                                }
                                if (consumo.DepositoDestino != null)
                                {
                                    var stock = DAOFactory.StockDAO.GetByDepositoAndInsumo(consumo.DepositoDestino.Id, detalle.Insumo.Id) ??
                                                new Stock {
                                        Deposito = consumo.DepositoDestino, Insumo = detalle.Insumo
                                    };
                                    stock.Cantidad += detalle.Cantidad;

                                    DAOFactory.StockDAO.SaveOrUpdate(stock);
                                }

                                procesados++;

                                if (vehiculo != null)
                                {
                                    DAOFactory.MovOdometroVehiculoDAO.ResetByVehicleAndInsumo(vehiculo, detalle.Insumo);
                                }

                                transaction.Commit();
                            }
                            catch (Exception)
                            {
                                erroneos++;
                                Log("FILA ERRONEA", index, consumo);
                                transaction.Rollback();
                            }
                        }
                        else
                        {
                            erroneos++;
                            Log("FILA ERRONEA", index, consumo);
                        }
                    }
                    catch (Exception)
                    {
                        erroneos++;
                        Log("FILA ERRONEA", index, null);
                    }
                }
            }
            const int totalWidth = 200;
            var       percent    = index * 100 / rows.Count;

            litProgress.Text = string.Format(@"<div style='margin: auto; border: solid 1px #999999; background-color: #FFFFFF; width: {0}px; height: 10px;'>
                <div style='background-color: #0000AA; width: {1}px; height: 10px; font-size: 8px; color: #CCCCCC;'>{2}%</div>
                </div>", totalWidth, percent * totalWidth / 100, percent);
            lblDirs.Text     = string.Format(Reporte, procesados + erroneos, rows.Count, procesados,
                                             rows.Count > 0 ? (procesados * 100.0 / rows.Count).ToString("0.00") : "0.00", erroneos,
                                             rows.Count > 0 ? (erroneos * 100.0 / rows.Count).ToString("0.00") : "0.00", sinProcesar,
                                             rows.Count > 0 ? (sinProcesar * 100.0 / rows.Count).ToString("0.00") : "0.00", TimeSpan.FromTicks(DateTime.Now.Ticks - start));
            panelProgress.Visible = true;
        }
Esempio n. 7
0
        protected override void OnExecute(Timer timer)
        {
            STrace.Trace(ComponentName, "Inicio de la tarea");

            var service  = new Service();
            var empresas = DaoFactory.EmpresaDAO.GetList();

            foreach (var empresa in empresas)
            {
                if (empresa.PumpHabilitado)
                {
                    var user     = empresa.PumpUsuario;
                    var password = empresa.PumpPassword;
                    var company  = empresa.PumpCompany;

                    STrace.Trace(ComponentName, string.Format("Pump Habilitado para: {0}", empresa.RazonSocial));

                    getFirstPendingTransactionResponse despacho;
                    try
                    {
                        despacho = service.GetFirstPendingTransaction(user, password, company);

                        if (despacho == null)
                        {
                            STrace.Trace(ComponentName, "Primer despacho == null");
                        }
                        if (despacho != null && despacho.trx_id == null)
                        {
                            STrace.Trace(ComponentName, "Primer despacho con id nulo");
                        }
                    }
                    catch (Exception ex) { STrace.Exception(ComponentName, ex); continue; }

                    while (despacho != null && despacho.trx_id != null && Convert.ToInt32(despacho.trx_id) > 0) // CONTROLAR QUE MANDA CUANDO NO HAY MAS DESPACHOS PENDIENTES
                    {
                        using (var transaction = SmartTransaction.BeginTransaction())
                        {
                            try
                            {
                                if (despacho.lastinformed_error_msg != null)
                                {
                                    throw new ApplicationException(despacho.lastinformed_error_msg);
                                }

                                var patente = despacho.car_plate;
                                if (patente == string.Empty)
                                {
                                    switch (company)
                                    {
                                    case "PAV":
                                        patente = "EXTRAS";
                                        break;

                                    case "TO":
                                        patente = "PLAYERO";
                                        break;
                                    }
                                }

                                var vehiculo = DaoFactory.CocheDAO.FindByPatente(-1, patente);
                                if (vehiculo == null)
                                {
                                    throw new ApplicationException(string.Format("Vehículo no encontrado: Patente: {0}", patente));
                                }

                                var deposito = DaoFactory.DepositoDAO.FindByCode(new[] { vehiculo.Empresa.Id },
                                                                                 new[] { vehiculo.Linea != null ? vehiculo.Linea.Id : -1 }, despacho.store);
                                if (deposito == null)
                                {
                                    throw new ApplicationException(string.Format("Depósito no encontrado: Codigo {0}", despacho.store));
                                }

                                var insumo = DaoFactory.InsumoDAO.FindByCode(new[] { vehiculo.Empresa.Id },
                                                                             new[] { vehiculo.Linea != null ? vehiculo.Linea.Id : -1 }, /*despacho.prod_id*/ "1");
                                if (insumo == null)
                                {
                                    throw new ApplicationException(string.Format("Insumo no encontrado: Codigo {0}", despacho.prod_id));
                                }

                                var nroFactura       = despacho.trx_id;
                                var consumoExistente = DaoFactory.ConsumoCabeceraDAO.FindByNroFactura(new[] { vehiculo.Empresa.Id },
                                                                                                      new[] { vehiculo.Linea != null ? vehiculo.Linea.Id : -1 }, nroFactura);
                                if (consumoExistente != null)
                                {
                                    STrace.Trace(ComponentName, string.Format("Despacho ya procesado: Factura Nro {0}", nroFactura));
                                    continue;
                                }

                                var stock = DaoFactory.StockDAO.GetByDepositoAndInsumo(deposito.Id, insumo.Id) ??
                                            new Stock {
                                    Deposito = deposito, Insumo = insumo
                                };
                                var fecha          = Convert.ToDateTime(despacho.trx_date);
                                var precioUnitario = Convert.ToDouble(despacho.ppu, CultureInfo.InvariantCulture);
                                var cantidad       = Convert.ToDouble(despacho.trx_volume, CultureInfo.InvariantCulture);
                                var precioTotal    = Convert.ToDouble(despacho.amount, CultureInfo.InvariantCulture);
                                var km             = Convert.ToDouble(despacho.car_kilometer, CultureInfo.InvariantCulture);

                                var consumoCabecera = new ConsumoCabecera
                                {
                                    Deposito       = deposito,
                                    Estado         = ConsumoCabecera.Estados.Pagado,
                                    Fecha          = fecha.AddHours(3),
                                    ImporteTotal   = precioTotal,
                                    KmDeclarados   = km,
                                    NumeroFactura  = nroFactura,
                                    TipoMovimiento = ConsumoCabecera.TiposMovimiento.DepositoAVehiculo,
                                    Vehiculo       = vehiculo
                                };

                                DaoFactory.ConsumoCabeceraDAO.SaveOrUpdate(consumoCabecera);

                                var consumoDetalle = new ConsumoDetalle
                                {
                                    Cantidad        = cantidad,
                                    ConsumoCabecera = consumoCabecera,
                                    ImporteTotal    = precioTotal,
                                    ImporteUnitario = precioUnitario,
                                    Insumo          = insumo
                                };

                                stock.Cantidad -= consumoDetalle.Cantidad;

                                DaoFactory.ConsumoDetalleDAO.SaveOrUpdate(consumoDetalle);
                                DaoFactory.StockDAO.SaveOrUpdate(stock);

                                if (stock.AlarmaActiva)
                                {
                                    if (stock.Cantidad < stock.StockCritico)
                                    {
                                        MessageSaver.Save(MessageIdentifier.StockCritic.ToString("d"), consumoCabecera.Vehiculo, consumoCabecera.Fecha, null,
                                                          "Alarma Stock Crítico");
                                    }
                                    else if (stock.Cantidad < stock.PuntoReposicion)
                                    {
                                        MessageSaver.Save(MessageIdentifier.StockReposition.ToString("d"), consumoCabecera.Vehiculo, consumoCabecera.Fecha, null,
                                                          "Alarma Reposición de Stock");
                                    }
                                }

                                transaction.Commit();

                                STrace.Trace(ComponentName, consumoCabecera.Vehiculo.Dispositivo != null ? consumoCabecera.Vehiculo.Dispositivo.Id : 0,
                                             string.Format("Despacho importado - Fecha: {0:dd/MM/yyyy HH:mm} - Factura: {1}", consumoCabecera.Fecha.AddHours(-3),
                                                           consumoCabecera.NumeroFactura));

                                var confirmacion = service.SetLastInformedTransaction(user, password, company, despacho.trx_id);
                                if (confirmacion.lastinformed_error_msg != null)
                                {
                                    STrace.Trace(ComponentName, consumoCabecera.Vehiculo.Dispositivo != null ? consumoCabecera.Vehiculo.Dispositivo.Id : 0,
                                                 string.Format("Mensaje de confirmación: {0}", confirmacion.lastinformed_error_msg));
                                }
                            }
                            catch (Exception ex)
                            {
                                STrace.Exception(ComponentName, ex);
                                transaction.Rollback();
                            }
                            finally
                            {
                                despacho = service.GetFirstPendingTransaction(user, password, company, despacho.trx_id);
                            }
                        }
                    }
                }
                else
                {
                    STrace.Trace(ComponentName, string.Format("Pump No Habilitado para: {0}", empresa.RazonSocial));
                }
            }
        }