public List<UltimoNumeroComprobante> NumeracionPorComprobantesExportacion( Autorizacion autorizacion, int puntoDeVenta )
        {
            List<UltimoNumeroComprobante> retorno = new List<UltimoNumeroComprobante>();
            ConsultasWSFex consulta = new ConsultasWSFex( this.wsfex );
            try
            {
                List<Comprobante> comprobantes = consulta.ObtenerTiposDeComprobante( autorizacion );
                foreach ( Comprobante comprobante in comprobantes )
                {
                    long ultimoNumero = consulta.UltimoComprobante( autorizacion, puntoDeVenta, comprobante.Id );

                    retorno.Add( new UltimoNumeroComprobante() { TipoComprobante = comprobante.Id, UltimoNumero = (int) ultimoNumero } );
                }
            }
            catch ( ExcepcionFe error )
            {
                ValidacionException ex = new ValidacionException( "NumeracionPorComprobantes", error.Message );
                this.MensajeDeError = error.Message;
                throw ex;
            }
            return retorno;
        }
        public CAERespuestaFex ObtenerCaeWSFEX( Autorizacion autorizacion, FexCabecera cabFex )
        {
            long ultimoNro = this.UltimoComprobanteFex( autorizacion, cabFex.PuntoDeVenta, cabFex.TipoComprobante );

            WrapperCabeceraFex wr = new WrapperCabeceraFex();

            ServidorFacturaElectronicaExportacion sfex = new ServidorFacturaElectronicaExportacion( this.wsfex, this.logueador );
            CAERespuestaFex respuesta = null;
            cabFex.Id = this.ObtenerIdFex( cabFex, ultimoNro, autorizacion );
            List<Observacion> diferencias;
            try
            {
                this.logueador.Loguear( "Consultando Afip....." );
                this.logueador.Loguear( cabFex.Serializar() );

                respuesta = sfex.ObtenerCae( autorizacion, cabFex );

                this.logueador.Loguear( "Respuesta Afip......." );
                this.logueador.Loguear( respuesta.Serializar() );

                if ( cabFex.ComprobanteNumero <= ultimoNro )
                {
                    ConsultasWSFex consulta = new ConsultasWSFex( wsfex );
                    ClsFEXGetCMPR comprobanteAfip = consulta.DatosDeComprobante( autorizacion, cabFex.TipoComprobante, cabFex.ComprobanteNumero, cabFex.PuntoDeVenta );
                    // Aca comparo los comprobantes y y si hay diferencias lo rechazo
                    diferencias = wr.Comparar( comprobanteAfip, cabFex );

                    if ( diferencias.Count > 0 )
                    {
                        respuesta.MotivosObservaciones = "Diferencias en comprobante.";
                        respuesta.Observaciones = diferencias;
                        respuesta.Resultado = "R";
                        respuesta.Cae = "";
                    }
                }
            }
            catch ( ExcepcionFe ex )
            {
                this.MensajeDeError = ex.Message;
                throw ex;
            }

            return respuesta;
        }
 private long ObtenerIdFex( FexCabecera cabFex, long ultimoNro, Autorizacion autorizacion )
 {
     long retorno;
     if ( cabFex.ComprobanteNumero <= ultimoNro )
     {
         ConsultasWSFex consultas = new ConsultasWSFex( this.wsfex, this.logueador );
         ClsFEXGetCMPR consRet = consultas.DatosDeComprobante( autorizacion, cabFex.TipoComprobante, cabFex.ComprobanteNumero, cabFex.PuntoDeVenta );
         retorno = consRet.Id;
     }
     else
     {
         ConsultasWSFex consultas = new ConsultasWSFex( this.wsfex, this.logueador );
         retorno = consultas.UltimoId( autorizacion ) + 1;
     }
     return retorno;
 }
 private long UltimoComprobanteFex( Autorizacion autorizacion, int pventa, int tipoComprobante )
 {
     ConsultasWSFex consulta = new ConsultasWSFex( this.wsfex, this.logueador );
     return consulta.UltimoComprobante( autorizacion, pventa, tipoComprobante );
 }
 public List<UnidadDeMedida> ObtenerValoresUnidadDeMedida( Autorizacion autorizacion )
 {
     ConsultasWSFex consulta = new ConsultasWSFex( this.wsfex );
     return consulta.ObtenerTiposDeUnidadDeMedida( autorizacion );
 }
 public List<TipoMoneda> ObtenerValoresMonedas( Autorizacion autorizacion )
 {
     ConsultasWSFex consulta = new ConsultasWSFex( this.wsfex );
     return consulta.ObtenerTiposDeMoneda( autorizacion );
 }
 public List<Incoterms> ObtenerValoresIncoterms( Autorizacion autorizacion )
 {
     ConsultasWSFex consulta = new ConsultasWSFex( this.wsfex );
     return consulta.ObtenerIncoterms( autorizacion );
 }
 public List<TipoExportacion> ObtenerValoresConceptos( Autorizacion autorizacion )
 {
     ConsultasWSFex consulta = new ConsultasWSFex( this.wsfex );
     return consulta.ObtenerTiposDeExportacion( autorizacion );
 }
        public List<Pais> ObtenerCuitDePaises( Autorizacion autorizacion )
        {
            ConsultasWSFex consulta = new ConsultasWSFex( this.wsfex );

            List<Pais> paises = consulta.ObtenerCodigosPaises( autorizacion );
            List<CuitPais> cuits = consulta.ObtenerCuitDePaises( autorizacion );
            List<CuitPais> temporal;
            foreach ( Pais item in paises )
            {
                temporal = cuits.FindAll( x => x.Descripcion.ToUpper().Contains( item.Descripcion.ToUpper() + " " ) );
                item.Cuits = new List<CuitPais>();
                if ( temporal != null )
                {
                    foreach ( CuitPais cuit in temporal )
                    {
                        cuit.Descripcion = this.ExtraerTipoCuit( cuit.Descripcion );
                        item.Cuits.Add( cuit );
                    }
                }
            }
            return paises;
        }