public int AgregarGuia(IGuia guia, IUsuarios usuario, int agenciaConectadaID, int cantGuias, string nroRemito) { using (SqlConnection conexion = new SqlConnection()) { GuiaServicioConfirmacion guiaServicio = new GuiaServicioConfirmacion(); SqlTransaction transaccion = null; transaccion = null; conexion.ConnectionString = Config.ConnectionString; try { // Abro la conexión a la BD conexion.Open(); // Inicio una transacción transaccion = conexion.BeginTransaction(); // Reviso si la guía esta Conformada o Entregada. Si no está conformada o entregada la conformo. //if ((!guia.RevisarSiTieneEstadoHistoricoBuscado(7, 4, guia.AgenciaDestinoID)) && (!guia.RevisarSiTieneEstadoHistoricoBuscado(6, 1, guia.AgenciaDestinoID))) /*10/10/2012: Si la guia va a un punto de recepcion ajeno debo buscar cual es la agencia de referencia de redespacho para que se conforme para dicha agencia*/ int agenciaDestinoID = 0; if (guia.PuntoRecepcionID > 0) { PuntoRecepcion puntoRecepcion = new PuntoRecepcion(); puntoRecepcion.PuntoRecepcionID = guia.PuntoRecepcionID; puntoRecepcion.Consultar(); if (puntoRecepcion.AgenciaReferenciaRedespacho > 0) { agenciaDestinoID = puntoRecepcion.AgenciaReferenciaRedespacho; } else { // Si en el caso que el punto de recepcion no tuviera agencia de referencia de redespacho, coloco como conformada a la agencia origen de la guia. agenciaDestinoID = guia.AgenciaOrigenID; } } else { agenciaDestinoID = guia.AgenciaDestinoID == 0 ? guia.AgenciaOrigenID : guia.AgenciaDestinoID; //En caso de error tomo agenciadestino = agenciaorigen } //DM 09/10/2012 modificado para que no tome un guia anulada y si ya ha sido conformada por alguna agencia if ((!guia.RevisarSiTieneEstadoHistoricoBuscado(7, 4, agenciaDestinoID)) && (!guia.RevisarSiTieneEstadoHistoricoBuscado(6, 1, agenciaDestinoID)) && (!guia.EsGuiaAnulada(guia.GuiaID)) && (!guia.RevisarSiTieneEstadoHistoricoBuscadoSinAgencia(7, 4))) { #region Remito en cuenta corriente if (guia.TipoGuia.Equals("R") && guia.GuiaTieneFPD() && guia.RemitoEstaFacturado() == false) { /* VSA: Controlar si el remito original se pasó a cuenta corriente -> Generar remito no factura. */ GuiaPasajeACtaCte oDatos = new GuiaPasajeACtaCte(); oDatos.GuiaID = guia.GuiaID; oDatos.Consultar(); if (oDatos.ClienteIDNuevo != 0 && oDatos.ClienteIDAnt == 0) { guia.OFactura = new Factura(); guia.OFactura.ClasificacionFacturaID = (int)SisPack.ClasificacionFactura.Remito; guia.OFactura.ClienteID = oDatos.ClienteIDNuevo; guia.OFactura.CondicionPagoID = (int)NegociosSisPackInterface.SisPack.CondicionPago.CuentaCorriente; Cliente cliente = new Cliente(); cliente.ClienteID = oDatos.ClienteIDNuevo; cliente.Consultar(); guia.OFactura.CondicionIVAAgentePago = (int)cliente.CondicionIva; guia.OFactura.NroCUITAgentePago = cliente.NroCuit; } oDatos = null; } #endregion /*16/05/2012: Si la guia va a un punto de recepcion ajeno debo buscar cual es la agencia de referencia de redespacho para que se conforme para dicha agencia*/ //int agenciaDestinoID = 0; //if (guia.PuntoRecepcionID > 0) //{ // PuntoRecepcion puntoRecepcion = new PuntoRecepcion(); // puntoRecepcion.PuntoRecepcionID = guia.PuntoRecepcionID; // puntoRecepcion.Consultar(); // if (puntoRecepcion.AgenciaReferenciaRedespacho > 0) // agenciaDestinoID = puntoRecepcion.AgenciaReferenciaRedespacho; // else // // Si en el caso que el punto de recepcion no tuviera agencia de referencia de redespacho, coloco como conformada a la agencia origen de la guia. // agenciaDestinoID = guia.AgenciaOrigenID; //} //else // agenciaDestinoID = guia.AgenciaDestinoID; if (!guia.Entregada("Guía conformada por proceso de Recepción de Conformadas", agenciaDestinoID, transaccion, usuario)) { new Exception("La guía " + guia.TipoGuia + " - " + guia.NroSucursalGuia + " - " + guia.NroGuia + " no se puede conformar correctamente."); } } int lote = guia.RecibidaControlada("", agenciaConectadaID, usuario, this.CajaID, cantGuias, transaccion); if (lote == 0) /* La guía ya se almacenó rollback */ { new Exception("La guía " + guia.TipoGuia + " - " + guia.NroSucursalGuia + " - " + guia.NroGuia + " ya está almacenada en otra caja."); } else { if (nroRemito != string.Empty) // si el remito es string.Empty es que no se selecciono para confirmar servicio { //Diego Guardo la confirmacion del servicio guiaServicio.Fecha = DateTime.Now; guiaServicio.AgenciaID = agenciaConectadaID; guiaServicio.GuiaID = guia.GuiaID; guiaServicio.NroRemito = nroRemito; guiaServicio.UsuarioID = usuario.UsuarioID; guiaServicio.GuardarConfirmacion(transaccion); } } transaccion.Commit(); return(lote); } catch (Exception ex) { transaccion.Rollback(); throw ex; } } }