예제 #1
0
        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;
                }
            }
        }