Escribimos este post para aclarar, por lo que vemos han sido varios usuarios los que nos han reportado problemas con el manejo de los campos opcionales del CFD y cuando decimos CFD nos referimos al CFD y CFDI.
Cada atributo del CFD dentro de la librería, tiene diferentes métodos que permite ejecutar diferentes opciones y de las al parecer no son muy conocidas, y creemos que esto se debe más que nada a que hemos hecho poco eco sobre las mismas; así que trataremos de proporcionar una explicación sobre las mismas.
Como decía, todos los atributos, un ejemplo es Folio, Serie, RFC del emisor, etc tienen una serie de métodos que debemos usar si queremos generar correctamente el CFD.
Algunos de estos son:
- Método Clear(): Permite limpiar un campo, si el atributo es de tipo numérico le asigna cero, si es de tipo fecha le asigna la fecha mínima soportado por Net y si es de tipo string asigna vacio, es importante notar que es vacio y no nulo.
La importancia de este método, que es no solo limpia el campo sino que además le indica a la librería que ese campo no lo debe de usar en la generación del CFD.
Nuestra recomendación es que usen dicho método cuando quieran que un atributo no sea tomado en cuenta en la generación del CFD.
- Propiedad IsAssigned: Indica si el atributo tiene algún valor, aunque sea cero o vacio; es de solo lectura y se ve afectado cuando se asigna un valor al atributo o cuando se ejecuta el método Clear().
- Método AsString(): Permite obtener le valor almacenado en el atributo como una cadena de texto, en el caso de los tipos de datos numérico y de tipo fecha el valor obtenido es como se almacena en el XML.
- Método AsXML(): Permite obtener le valor almacenado en el atributo como una cadena de texto en el formato que es requerido por el SAT.
- Método FillWithRandomData(): Llena el campo con un valor aleatorio, es mas de uso interno.
- Método SetData(): Es de uso interno y NUNCA debe ser utilizado.
Como conclusión, cuando quieran que un atributo no salga en el XML usen el método Clear().
Hasta la próxima.