public bool GuardarPasaje() { try { using (SqlConnection conexion = new SqlConnection()) { SqlTransaction transaccion = null; conexion.ConnectionString = Config.ConnectionString; try { conexion.Open(); transaccion = conexion.BeginTransaction(); UnidadVenta uventa = new UnidadVenta(); uventa.UnidadVentaID = UnidadVentaIDNueva; uventa.Consultar(); // Actualizar la tabla GuiaFacturaDetalle con la nueva unidad de venta Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleUPD", Utiles.BaseDatos.IntToSql(this.GuiaID), Utiles.BaseDatos.IntToSql(this.UnidadVentaIDNueva), Utiles.BaseDatos.IntToSql(uventa.Producto.ProductoID), Utiles.BaseDatos.IntToSql(uventa.TiempoEntrega.TiempoEntregaID)); // Actualizar la tabla GuiaFacturaDetalleServicio, borrar el servicio FPD, que tenia la unidad de venta anterior Config.Conexion.EjecutarSinResultados(transaccion, "GuiaFacturaDetalleServicioDEL", Utiles.BaseDatos.IntToSql(this.GuiaID), Utiles.BaseDatos.IntToSql((int)NegociosSisPackInterface.SisPack.Servicio.FletePagoDestino)); // Actualizar la tabla GuiaFacturaDetalleServicio, insertar los nuevos servicios que tiene la nueva unidad de venta if (uventa.ServiciosCol.getCount() > 0) { GuiaFacturaDetalleServicio guiaServicio = null; IServicio servicio = null; for (int i = 0; i < uventa.ServiciosCol.getCount(); i++) { servicio = uventa.ServiciosCol.GetServicio(i); guiaServicio = new GuiaFacturaDetalleServicio(); guiaServicio.GuiaID = GuiaID; guiaServicio.ServicioID = servicio.ServicioID; guiaServicio.Guardar(transaccion); } } /* Dejar log del pasaje * 1- Para los remitos, al momento de la conformación se emitirá un remito en vez de una factura. */ Config.Conexion.EjecutarSinResultados(transaccion, "GuiaPasajeACtaCteINS", Utiles.BaseDatos.IntToSql(this.GuiaID), Utiles.BaseDatos.IntToSql(this.FacturaID), this.ClienteIDNuevo, Utiles.BaseDatos.IntToSql(this.clienteIDAnt), Utiles.BaseDatos.StrToSql(this.PersonaSolicitante), Utiles.BaseDatos.StrToSql(this.Observaciones), this.UsuarioID, Utiles.BaseDatos.IntToSql((int)NegociosSisPackInterface.SisPack.TipoOperacionGuiaPasajeID.Pasaje), Utiles.BaseDatos.IntToSql(AgenciaID), Impreso); transaccion.Commit(); return(true); } catch (Exception ex) { transaccion.Rollback(); throw ex; } } } catch (Exception) { return(false); } }
public bool Guardar(System.Data.SqlClient.SqlTransaction transaccion) { if (this.GuiaFacturaDetalleID == 0) { UnidadVenta uventa = new UnidadVenta(); uventa.UnidadVentaID = this.UnidadVentaID; /* VSA: Desarrollo modificaciones en la emisión de la guía - registrar servicios, producto y tiempo de entrega. */ uventa.Consultar(); this.GuiaFacturaDetalleID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion,"GuiaFacturaDetalleINS", this.GuiaID,Utiles.BaseDatos.IntToSql((int)this.TipoBultoID),Utiles.BaseDatos.IntToSql(this.UnidadVentaID), Utiles.BaseDatos.DoubleToSql(this.VolumenDetalleTotal), Utiles.BaseDatos.DoubleToSql(this.ValorDeclaradoDetalleTotal), Utiles.BaseDatos.IntToSql(this.GuiaDevueltaID),Utiles.BaseDatos.DoubleToSql(this.SeguroTantoPorMil), Utiles.BaseDatos.IntToSql(this.CantidadBultos),Utiles.BaseDatos.DoubleToSql(this.PesoDetalleTotal), Utiles.BaseDatos.DoubleToSql(this.ContrareembolsoImporteTotal), Utiles.BaseDatos.IntToSql(uventa.Producto.ProductoID), Utiles.BaseDatos.IntToSql(uventa.TiempoEntrega.TiempoEntregaID))); // pregunto si la condicion de pago de la guia es contado y // si la unidad de venta no tiene servicio flete pago en destino // si es asi, entonces, se le decrementa el crédito a la agencia bool tieneFletePago = uventa.TieneFletePago(); if (this.EsContado && !tieneFletePago) { // decremento el crédito de las autorizaciones (si existen) DsAutorizacionesCreditoAgencia ds = new DsAutorizacionesCreditoAgencia(); SqlParameter pAgenciaID = new SqlParameter("@AgenciaID", this.AgenciaOrigenID); Config.Conexion.LlenarTypeDataSet(ds.Datos, System.Data.CommandType.StoredProcedure, "AutorizacionAgenciaCreditoSEL", pAgenciaID); double importe = 0; bool parar = false; // recorro cada autorizacion y la decremento foreach(DsAutorizacionesCreditoAgencia.DatosRow dr in ds.Datos.Rows) { importe = Convert.ToDouble(Config.Conexion.EjecutarResultadoUnico(transaccion, "DecrementarCreditoAutorizacionAgenciaUPD", dr.AutorizacionAgenciaID, this.AgenciaOrigenID, importe, this.GuiaID, dr.CreditoActual)); if (importe < 0) { parar = true; break; } } if (!parar) { // decrementa el crédito de la agencia (usa el saldo de lo que no cubrieron las autorizaciones) Config.Conexion.EjecutarSinResultados(transaccion, "DecrementarCreditoAgenciaUPD", this.AgenciaOrigenID, this.GuiaID, importe); } } //VER: si es mejor así: o que la factura guarde todo....VER SI SIEMPRE SERIA NECESARIO GUARDAR LOS DETALLES if(conceptosFactu.getCount()>0) { conceptosFactu.GuiaFacturaDetalleID = this.GuiaFacturaDetalleID; conceptosFactu.GuiaID = this.GuiaID; conceptosFactu.Guardar(transaccion); } if(formasPago.getCount()>0) { formasPago.GuiaFacturaDetalleID = this.GuiaFacturaDetalleID; formasPago.GuiaID = this.GuiaID; formasPago.Guardar(transaccion); } if (uventa.ServiciosCol.getCount() > 0) { GuiaFacturaDetalleServicio guiaServicio = null; IServicio servicio = null; for(int i = 0; i < uventa.ServiciosCol.getCount(); i++) { servicio = uventa.ServiciosCol.GetServicio(i); guiaServicio = new GuiaFacturaDetalleServicio(); guiaServicio.GuiaID = this.GuiaID; guiaServicio.ServicioID = servicio.ServicioID; guiaServicio.Guardar(transaccion); } } } return true; }