¿Cómo obtener el #UUID (Timbre fiscal) de un xml timbrado en c#? #facturacion

Para obtener el UUID de un xml que ya tengamos timbrado del SAT lo podemos hacer con LINQ muy sencillo como muestro a continuación:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//sustituir por la ruta de tu xml
string rutaXML="C:/carpeta1/carpeta2/factura.xml";
 
//variables del esquema
XNamespace cfdi = @"http://www.sat.gob.mx/cfd/3";
 
//cargamos el xml
var xdoc = XDocument.Load(rutaXML);
 
//Navegamos hasta el elemento que contiene el UUID
var elt = xdoc.Element(cfdi + "Comprobante")
              .Element(cfdi + "Complemento")
              .Element(tfd + "TimbreFiscalDigital");
 
//listo obtenemos el UUID
var uuid = (string)elt.Attribute("UUID");

Catálogos para facturar CFDI 3.3 SAT en mysql

ULTIMA ACTUALIZACIÓN DE LOS CATÁLOGOS: 3 DE ENERO 2018

Pongo a disposición los catálogos en mysql publicados por SAT necesarios para la facturación 3.3.

Estaré actualizándolos conforme el SAT libere nuevos registros. Solo dar clic en el siguiente enlace:



DESCARGAR CATÁLOGOS SAT

Si deseas descargar los catálogos para sql server entra aquí

Si deseas descargar los catálogos para SQLite entra aquí

¿Cómo llenar un SelectList manualmente? C# .Net

Para llenar un SelectList manualmente y poder ser utilizado en nuestro DropDownList (o lo que sea) lo podemos hacer de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
//creamos una lista tipo SelectListItem
List<SelectListItem> lst = new List<SelectListItem>();
 
//De la siguiente manera llenamos manualmente,
//Siendo el campo Text lo que ve el usuario y
//el campo Value lo que en realidad vale nuestro valor
lst.Add(new SelectListItem() { Text = "Pato", Value = "1" });
lst.Add(new SelectListItem() { Text = "Perro", Value = "2" });
lst.Add(new SelectListItem() { Text = "Pollo", Value = "3" });
lst.Add(new SelectListItem() { Text = "Gato", Value = "4" });
 
//Agregamos la lista a nuestro SelectList
SelectList miSL = new SelectList(lst, "Value", "Text");

¿Cómo reiniciar a 0 la clave primaria en sql server cuando es autoincrementable?

Para reiniciar una clave primaria la cual es autoincrementable, o si deseamos poner que nuestro valor continué en un numero en especifico, se realiza de la siguiente manera:

1
DBCC CHECKIDENT ('esquema.nombretabla', RESEED, 0);

El anterior código pondrá nuestro contador en 0, siendo el siguiente registro a insertarse 1.

¿Cómo crear una clase para logs (bitácora) en C#?

Comparto una clase la cual sirve para crear logs de manera fácil y dinámica.
La clase crea un archivo el cual va siendo llenado por cadenas, cada mensaje es guardado en un archivo por día y al mensaje guardado se le anexa la hora en la cual fue creado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class Log
   {
       private string Path = "";
      
 
       public Log(string Path)
       {
           this.Path = Path;
       }
 
       public void Add(string sLog)
       {
           CreateDirectory();
           string nombre = GetNameFile();
           string cadena = "";
 
           cadena += DateTime.Now + " - " + sLog + Environment.NewLine;
 
           StreamWriter sw = new StreamWriter(Path+"/"+nombre,true);
           sw.Write(cadena);
           sw.Close();
 
       }
 
       #region HELPER
       private string GetNameFile()
       {
           string nombre = "";
 
           nombre = "log_" + DateTime.Now.Year + "_" + DateTime.Now.Month + "_" + DateTime.Now.Day + ".txt";
 
           return nombre;
       }
 
       private void CreateDirectory()
       {
           try
           {
               if (!Directory.Exists(Path))
                   Directory.CreateDirectory(Path);
 
               
           }
           catch (DirectoryNotFoundException ex) {
               throw new Exception(ex.Message);
                
           }
       }
       #endregion
   }

Se utiliza de la siguiente manera:

1
2
3
string path = HttpContext.Current.Request.MapPath("~");
Log oLog = new Log(path);
oLog.Add("Hola mundo");

Como obtener el nombre del navegador por medio de #javascript #js

Para obtener cual es el navegador por el cual entra el usuario a nuestro sitio web, anexo la siguiente función la cual regresa un entero dependiendo el navegador:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//1= Opera
//2= Firefox
//3= Safari
//4= IE
//5= Edge
//6= Chrome
//7= Blink
function cualNavegador(){
    // Opera 8.0+
    var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
 
    // Firefox 1.0+
    var isFirefox = typeof InstallTrigger !== 'undefined';
 
    // Safari 3.0+ "[object HTMLElementConstructor]"
    var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0 || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);
 
    // Internet Explorer 6-11
    var isIE = /*@cc_on!@*/false || !!document.documentMode;
 
    // Edge 20+
    var isEdge = !isIE && !!window.StyleMedia;
 
    // Chrome 1+
    var isChrome = !!window.chrome && !!window.chrome.webstore;
 
    // Blink
    var isBlink = (isChrome || isOpera) && !!window.CSS;
 
    if(isOpera)return 1;
    if(isFirefox)return 2;
    if(isSafari)return 3;
    if(isIE)return 4;
    if(isEdge)return 5;
    if(isChrome)return 6;
    if(isBlink)return 7;
 
    return 0; //sin identificar
}

¿Cómo parsear el formato dd-mm-yy en un DateTime en C# .Net?

Para poder parsear el formato dd-mm-yy en c# .Net, el problema radica que en el año solo tenemos 2 dígitos, pero esto no impide que se pueda realizar de manera fácil, para hacerlo basta con utilizar el método ParseExact de DateTime de la siguiente forma:

1
DateTime fecha = DateTime.ParseExact("30-01-16", "dd-MM-yy", CultureInfo.InvariantCulture);

Como instalar el software para gimnasio HDELEON

En el siguiente video te explico cómo instalar el software para gimnasio HDELEON, el cual es gratuito y de código libre.

Muchas personas sin nociones de programación me contactaron y es por eso que hice el video, espero les sirva.