/// <summary>
        /// Explica el uso del comando
        /// </summary>
        /// <remarks></remarks>
        public static void explicarUso()
        {
            Microsoft.VisualBasic.ApplicationServices.ApplicationBase MyApplication = new Microsoft.VisualBasic.ApplicationServices.ApplicationBase();

            Console.WriteLine("");
            Console.WriteLine("Uso: {0} (opciones) ...", MyApplication.Info.AssemblyName);
            Console.WriteLine("");
            Console.WriteLine("opciones:");
            Console.WriteLine(" -s servicio ID del servicio de negocio");
            Console.WriteLine(" Valor por defecto: " + DEFAULT_SERVICIO);
            Console.WriteLine(" -c certificado Ruta del certificado (con clave privada)");
            Console.WriteLine(" Valor por defecto: " + DEFAULT_CERTSIGNER);
            Console.WriteLine(" -p password del certificado");
            Console.WriteLine(" -t CUIT");
            Console.WriteLine(" Valor por defecto: " + DEFAULT_CUIT);
            Console.WriteLine(" -w url URL del WSDL del WSAA");
            Console.WriteLine(" Valor por defecto: " + DEFAULT_URLWSAAWSDL);
            Console.WriteLine(" -x url URL del WSDL del WSFE");
            Console.WriteLine(" Valor por defecto: " + DEFAULT_URLWSFEWSDL);
            Console.WriteLine(" -T CbteTipo");
            Console.WriteLine(" Obligatorio, sin default (int)");
            Console.WriteLine(" -P PtoVta");
            Console.WriteLine(" Obligatorio, sin default (int)");
            Console.WriteLine(" -o archivo_de_salida.xml");
            Console.WriteLine(" Valor por defecto: " + DEFAULT_ARCHIVOSALIDA);
            Console.WriteLine(" -v on|off Reportes detallados de la ejecución");
            Console.WriteLine(" -? Esta ayuda");
        }
        public static void MostrarVersion()
        {
            Microsoft.VisualBasic.ApplicationServices.ApplicationBase MyApplication = new Microsoft.VisualBasic.ApplicationServices.ApplicationBase();

            Console.WriteLine("Aplicacion : {0}", MyApplication.Info.AssemblyName);
            Console.WriteLine("Version : {0}", Convert.ToString(MyApplication.Info.Version));
            Console.WriteLine("Descripcion: {0}", MyApplication.Info.Description);
        }
        // Pulls together pieces of information that can be useful in tracking down user issues that don't create an error popup
        private string DumpConfig(MainWindow mainWindow)
        {
            PresentationSource source = PresentationSource.FromVisual(mainWindow);

            System.Drawing.Point CurrentLocation = new System.Drawing.Point((int)mainWindow.Left, (int)mainWindow.Top);

            // Pull in VisualBasic stuff to make up for C# WPF not having many features accessible for this
            Microsoft.VisualBasic.Devices.ComputerInfo   ComputerInfo   = new Microsoft.VisualBasic.Devices.ComputerInfo();
            Microsoft.VisualBasic.Devices.Computer       Computer       = new Microsoft.VisualBasic.Devices.Computer();
            Microsoft.VisualBasic.Devices.Network        Network        = new Microsoft.VisualBasic.Devices.Network();
            Microsoft.VisualBasic.Devices.ServerComputer ServerComputer = new Microsoft.VisualBasic.Devices.ServerComputer();
            Microsoft.VisualBasic.ApplicationServices.ApplicationBase ApplicationBase = new Microsoft.VisualBasic.ApplicationServices.ApplicationBase();

            StringBuilder Detail       = new StringBuilder();
            string        RegistryPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";

            Detail.AppendLine(string.Format("OS: {0}", Microsoft.Win32.Registry.GetValue(RegistryPath, "ProductName", null)));
            Detail.AppendLine(string.Format("BLD: {0}", Microsoft.Win32.Registry.GetValue(RegistryPath, "CurrentBuild", null)));
            Detail.AppendLine(string.Format("LAB: {0}", Microsoft.Win32.Registry.GetValue(RegistryPath, "BuildLab", null)));
            // Check if the user is running this under Wine
            Detail.AppendLine(string.Format("WINE: {0}", (Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Wine") != null ? true : false)));
            Detail.AppendLine(string.Format("ADM: {0}", new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator).ToString()));
            Detail.AppendLine(string.Format("DPI: X: {0}, Y: {1}", source.CompositionTarget.TransformToDevice.M11 * 96, source.CompositionTarget.TransformToDevice.M22 * 96));
            Detail.AppendLine(string.Format("PMN: {0}", Computer.Screen.Primary));
            Detail.AppendLine(string.Format("RES: X: {0}, Y: {1}", Computer.Screen.Bounds.Width, Computer.Screen.Bounds.Height));
            Detail.AppendLine(string.Format("SWA: X: {0}, Y: {1}, W: {2}, H: {3}", Computer.Screen.WorkingArea.X, Computer.Screen.WorkingArea.Y, Computer.Screen.WorkingArea.Width, Computer.Screen.WorkingArea.Height));
            Detail.AppendLine(string.Format("BPP: {0}", Computer.Screen.BitsPerPixel));
            Detail.AppendLine(string.Format("SDN: {0}", Computer.Screen.DeviceName));
            Detail.AppendLine(string.Format("NWK: {0}", System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()));
            Detail.AppendLine(string.Format("CCN: {0}", System.Globalization.CultureInfo.InstalledUICulture.EnglishName));
            Detail.AppendLine(string.Format("SCN: {0}", System.Globalization.CultureInfo.InstalledUICulture.Name));
            // Byte -> Megabyte = / 1048576
            // Byte -> Gigabyte = / 1073741824
            Detail.AppendLine(string.Format("APM: {0}/{1}", (ComputerInfo.AvailablePhysicalMemory / 1048576), (ComputerInfo.TotalPhysicalMemory / 1048576)));
            // Something is not right with this, the values are WAY too high
            Detail.AppendLine(string.Format("AVM: {0}/{1}", (ComputerInfo.AvailableVirtualMemory / 1048576), (ComputerInfo.TotalVirtualMemory / 1048576)));
            Detail.AppendLine(string.Format("VER: {0}", ApplicationBase.Info.Version.ToString()));
            Detail.AppendLine(string.Format("DIR: {0}", ApplicationBase.Info.DirectoryPath.ToString()));
            Detail.AppendLine(string.Format("APP: {0}", System.IO.Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName)));
            Detail.AppendLine(string.Format("SZE: Width: {0}, Height: {1}", mainWindow.Width, mainWindow.Height));
            Detail.AppendLine(string.Format("CLT: Width: {0}, Height: {1}", mainWindow.RenderSize.Width, mainWindow.RenderSize.Height));

            // Wrap motherboard information in a try because something can always not work in this, better to skip it all than try for each
            try
            {
                ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BaseBoard");

                foreach (ManagementObject wmi in searcher.Get())
                {
                    Detail.AppendLine(string.Format("MBM: {0}", wmi.GetPropertyValue("Manufacturer").ToString()));
                    Detail.AppendLine(string.Format("MBID: {0}", wmi.GetPropertyValue("Product").ToString()));
                }
            }
            catch { }

            return(Detail.ToString());
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Explica el uso del comando
        /// </summary>
        /// <remarks></remarks>
        public static void ExplicarUso()
        {
            Microsoft.VisualBasic.ApplicationServices.ApplicationBase MyApplication = new Microsoft.VisualBasic.ApplicationServices.ApplicationBase();

            Console.WriteLine("");
            Console.WriteLine("Uso: {0} (opciones) ...", MyApplication.Info.AssemblyName);
            Console.WriteLine("");
            Console.WriteLine("opciones:");
            Console.WriteLine(" -s servicio ID del servicio de negocio");
            Console.WriteLine(" Valor por defecto: " + DEFAULT_SERVICIO);
            Console.WriteLine(" -c certificado Ruta del certificado (con clave privada)");
            Console.WriteLine(" Valor por defecto: " + DEFAULT_CERTSIGNER);
            Console.WriteLine(" -w url URL del WSDL del WSAA");
            Console.WriteLine(" Valor por defecto: " + DEFAULT_URLWSAAWSDL);
            Console.WriteLine(" -v on|off Reportes detallados de la ejecución");
            Console.WriteLine(" -? Esta ayuda");
            Console.ReadKey();
        }
        /// <summary>
        /// Funcion Main (consola)
        /// </summary>
        /// <param name="args">Argumentos de linea de comandos</param>
        /// <returns>0 si terminó bien, valores negativos si hubieron errores</returns>
        /// <remarks></remarks>
        public static int Main(string[] args)
        {
            MostrarVersion();

            string strUrlWsaaWsdl       = DEFAULT_URLWSAAWSDL;
            string strUrlWsfeWsdl       = DEFAULT_URLWSFEWSDL;
            string strIdServicioNegocio = DEFAULT_SERVICIO;
            string strRutaCertSigner    = DEFAULT_CERTSIGNER;
            string strPassword          = null;
            long   longCuit             = DEFAULT_CUIT;
            int    cbteTipo             = DEFAULT_CBTETIPO;
            int    ptoVta         = DEFAULT_PTOVTA;
            string strSalida      = DEFAULT_ARCHIVOSALIDA;
            bool   blnVerboseMode = DEFAULT_VERBOSE;

            // Analizo argumentos de linea de comandos
            if (args.Length == 0)
            {
                explicarUso();
                return(-1);
            }
            for (int i = 0; i <= args.Length - 1; i++)
            {
                string argumento;
                argumento = args[i];

                if (String.Compare(argumento, "-w", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó la URL del WSDL del WSAA");
                        return(-1);
                    }
                    else
                    {
                        strUrlWsaaWsdl = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-x", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó la URL del WSDL del WSAA");
                        return(-1);
                    }
                    else
                    {
                        strUrlWsfeWsdl = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-s", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el ID del servicio de negocio");
                        return(-1);
                    }
                    else
                    {
                        strIdServicioNegocio = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-c", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó ruta del certificado firmante");
                        return(-1);
                    }
                    else
                    {
                        strRutaCertSigner = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-p") == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el password");
                        return(-1);
                    }
                    else
                    {
                        strPassword = args[i + 1];
                        i           = i + 1;
                    }
                }
                else if (String.Compare(argumento, "-t") == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el CUIT");
                        return(-1);
                    }
                    else
                    {
                        longCuit = long.Parse(args[i + 1]);
                        i        = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-T") == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el ComprobanteTipo (int)");
                        return(-1);
                    }
                    else
                    {
                        cbteTipo = int.Parse(args[i + 1]);
                        i        = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-P") == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el Punto de Venta (int)");
                        return(-1);
                    }
                    else
                    {
                        ptoVta = int.Parse(args[i + 1]);
                        i      = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-o", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el archivo de salida");
                        return(-1);
                    }
                    else
                    {
                        strSalida = args[i + 1];
                        i         = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-v", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó modo: on|off");
                        return(-1);
                    }
                    else
                    {
                        blnVerboseMode = (String.Compare(args[i + 1], "on", true) == 0 ? true : false);
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-?", true) == 0)
                {
                    explicarUso();
                    return(0);
                }
                else
                {
                    Microsoft.VisualBasic.ApplicationServices.ApplicationBase MyApplication = new Microsoft.VisualBasic.ApplicationServices.ApplicationBase();

                    Console.WriteLine("Error: argumento desconocido: {0}", argumento);
                    Console.WriteLine("Para obtener ayuda: {0} -?", MyApplication.Info.AssemblyName);
                    return(-2);
                }
            }

            // Argumentos OK, entonces procesar normalmente...
            LoginTicket objTicketRespuesta;
            string      strTicketRespuesta;

            try
            {
                if (blnVerboseMode)
                {
                    Console.WriteLine("***Servicio a acceder: {0}", strIdServicioNegocio);
                    Console.WriteLine("***URL del WSAA: {0}", strUrlWsaaWsdl);
                    Console.WriteLine("***URL del WSFE: {0}", strUrlWsfeWsdl);
                    Console.WriteLine("***Ruta del certificado: {0}", strRutaCertSigner);
                    Console.WriteLine("***Password del certificado: {0}", (strPassword == null ? "-NO PASSWD-" : "*****"));
                    Console.WriteLine("***Comprobante Tipo: {0}", cbteTipo);
                    Console.WriteLine("***Punto de venta: {0}", ptoVta);
                    Console.WriteLine("***Archivo de salida: {0}", strSalida);
                    Console.WriteLine("***Nro de CUIT en certificado: {0}", longCuit);
                    Console.WriteLine("***Modo verbose: {0}", blnVerboseMode);
                }


                objTicketRespuesta = new LoginTicket();

                if (blnVerboseMode)
                {
                    Console.WriteLine("***Accediendo a {0}", strUrlWsaaWsdl);
                }

                strTicketRespuesta = objTicketRespuesta.ObtenerLoginTicketResponse(strIdServicioNegocio, strUrlWsaaWsdl, strRutaCertSigner, strPassword, blnVerboseMode);

                if (blnVerboseMode)
                {
                    Console.WriteLine("***CONTENIDO DEL TICKET RESPUESTA:");
                    Console.WriteLine(" Token: {0}", objTicketRespuesta.Token);
                    Console.WriteLine(" Sign: {0}", objTicketRespuesta.Sign);
                    Console.WriteLine(" GenerationTime: {0}", Convert.ToString(objTicketRespuesta.GenerationTime));
                    Console.WriteLine(" ExpirationTime: {0}", Convert.ToString(objTicketRespuesta.ExpirationTime));
                    Console.WriteLine(" Service: {0}", objTicketRespuesta.Service);
                    Console.WriteLine(" UniqueID: {0}", Convert.ToString(objTicketRespuesta.UniqueId));
                }
            }
            catch (Exception excepcionAlObtenerTicket)
            {
                Console.WriteLine("***EXCEPCION AL OBTENER TICKET:");
                Console.WriteLine(excepcionAlObtenerTicket.Message);
                return(-10);
            }

            WsfeFECompUltimoAutorizado wsfeFECompUltimoAutorizado = new WsfeFECompUltimoAutorizado(strUrlWsfeWsdl, objTicketRespuesta.Token, objTicketRespuesta.Sign);

            wsfeFECompUltimoAutorizado.verbose = blnVerboseMode;
            return(wsfeFECompUltimoAutorizado.send(longCuit, cbteTipo, ptoVta, strSalida));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Funcion Main (consola)
        /// </summary>
        /// <param name="args">Argumentos de linea de comandos</param>
        /// <returns>0 si terminó bien, valores negativos si hubieron errores</returns>
        /// <remarks></remarks>
        public static int Main(string[] args)
        {
            MostrarVersion();

            string strUrlWsaaWsdl       = DEFAULT_URLWSAAWSDL;
            string strUrlWsfeWsdl       = DEFAULT_URLWSFEWSDL;
            string strIdServicioNegocio = DEFAULT_SERVICIO;
            string strRutaCertSigner    = DEFAULT_CERTSIGNER;
            string strPassword          = null;
            long   longCuit             = DEFAULT_CUIT;
            string strFactura           = DEFAULT_ARCHIVOFACTURA;
            string strSalida            = DEFAULT_ARCHIVOSALIDA;
            bool   blnVerboseMode       = DEFAULT_VERBOSE;

            // Analizo argumentos de linea de comandos
            if (args.Length == 0)
            {
                explicarUso();
                return(-1);
            }
            for (int i = 0; i <= args.Length - 1; i++)
            {
                string argumento;
                argumento = args[i];

                if (String.Compare(argumento, "-w", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó la URL del WSDL del WSAA");
                        return(-1);
                    }
                    else
                    {
                        strUrlWsaaWsdl = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-x", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó la URL del WSDL del WSAA");
                        return(-1);
                    }
                    else
                    {
                        strUrlWsfeWsdl = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-s", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el ID del servicio de negocio");
                        return(-1);
                    }
                    else
                    {
                        strIdServicioNegocio = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-c", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó ruta del certificado firmante");
                        return(-1);
                    }
                    else
                    {
                        strRutaCertSigner = args[i + 1];
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-p", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el password");
                        return(-1);
                    }
                    else
                    {
                        strPassword = args[i + 1];
                        i           = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-t", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el CUIT");
                        return(-1);
                    }
                    else
                    {
                        longCuit = long.Parse(args[i + 1]);
                        i        = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-f", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el archivo de entrada");
                        return(-1);
                    }
                    else
                    {
                        strFactura = args[i + 1];
                        i          = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-o", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó el archivo de salida");
                        return(-1);
                    }
                    else
                    {
                        strSalida = args[i + 1];
                        i         = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-v", true) == 0)
                {
                    if (args.Length < (i + 2))
                    {
                        Console.WriteLine("Error: no se especificó modo: on|off");
                        return(-1);
                    }
                    else
                    {
                        blnVerboseMode = (String.Compare(args[i + 1], "on", true) == 0 ? true : false);
                        i = i + 1;
                    }
                }

                else if (String.Compare(argumento, "-?", true) == 0)
                {
                    explicarUso();
                    return(0);
                }
                else
                {
                    Microsoft.VisualBasic.ApplicationServices.ApplicationBase MyApplication = new Microsoft.VisualBasic.ApplicationServices.ApplicationBase();

                    Console.WriteLine("Error: argumento desconocido: {0}", argumento);
                    Console.WriteLine("Para obtener ayuda: {0} -?", MyApplication.Info.AssemblyName);
                    return(-2);
                }
            }
            if (isMissingParameter(longCuit))
            {
                return(-3);
            }

            //var x = new WsfeSolicitud("xxx", "token", "bla");
            //x.pruebas(12345678, "lalala.xml", "lalala.xml");
            // return 1;



            // Argumentos OK, entonces procesar normalmente...
            LoginTicket objTicketRespuesta;
            string      strTicketRespuesta;

            try
            {
                if (blnVerboseMode)
                {
                    Console.WriteLine("***Servicio a acceder: {0}", strIdServicioNegocio);
                    Console.WriteLine("***URL del WSAA: {0}", strUrlWsaaWsdl);
                    Console.WriteLine("***URL del WSFE: {0}", strUrlWsfeWsdl);
                    Console.WriteLine("***Ruta del certificado: {0}", strRutaCertSigner);
                    Console.WriteLine("***Password del certificado: {0}", (strPassword == null ? "-NO PASSWD-" : "*****"));
                    Console.WriteLine("***Archivo de factura: {0}", strFactura);
                    Console.WriteLine("***Archivo de salida: {0}", strSalida);
                    Console.WriteLine("***Nro de CUIT en certificado: {0}", longCuit);
                    Console.WriteLine("***Modo verbose: {0}", blnVerboseMode);
                    Console.WriteLine(" CWD: {0}", AppDomain.CurrentDomain.BaseDirectory);
                }


                objTicketRespuesta = new LoginTicket();

                if (blnVerboseMode)
                {
                    Console.WriteLine("***Accediendo a {0}", strUrlWsaaWsdl);
                }

                strTicketRespuesta = objTicketRespuesta.ObtenerLoginTicketResponse(strIdServicioNegocio, strUrlWsaaWsdl, strRutaCertSigner, strPassword, blnVerboseMode);

                if (blnVerboseMode)
                {
                    Console.WriteLine("***CONTENIDO DEL TICKET RESPUESTA:");
                    Console.WriteLine(" Token: {0}", objTicketRespuesta.Token);
                    Console.WriteLine(" Sign: {0}", objTicketRespuesta.Sign);
                    Console.WriteLine(" GenerationTime: {0}", Convert.ToString(objTicketRespuesta.GenerationTime));
                    Console.WriteLine(" ExpirationTime: {0}", Convert.ToString(objTicketRespuesta.ExpirationTime));
                    Console.WriteLine(" Service: {0}", objTicketRespuesta.Service);
                    Console.WriteLine(" UniqueID: {0}", Convert.ToString(objTicketRespuesta.UniqueId));
                }
            }
            catch (Exception excepcionAlObtenerTicket)
            {
                Console.WriteLine("***EXCEPCION AL OBTENER TICKET:");
                Console.WriteLine(excepcionAlObtenerTicket.Message);
                return(-10);
            }

            WsfeSolicitud wsfeSolicitud = new WsfeSolicitud(strUrlWsfeWsdl, objTicketRespuesta.Token, objTicketRespuesta.Sign);

            wsfeSolicitud.verbose = blnVerboseMode;
            return(wsfeSolicitud.send(longCuit, strFactura, strSalida));
        }