Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / .Net / Código Único de Factura en C Sharp

Código Único de Factura en C Sharp

Autor jc mouse lunes, febrero 11, 2019

En este post implementamos el «Código Único de Factura» según la documentación otorgada por Impuestos Bolivia en su sitio web impuestos.gob.bo y la Resolución Normativa de Directorio Nº 101800000026.

El lenguaje utilizado en este post es C# (C Sharp) propiedad de Microsoft como parte de su plataforma .NET. El compilador utilizado es .NET 4.7.2

SFE

using System;
using System.Numerics;

public class CodigoUnico {
 public static void Main() {
  String cuf = obtenerCUF("123456789", "20190113163721242", 0, 2, 1, 1, 10, 10, 0);
  Console.WriteLine("CUF: " + cuf);
 }

 /**
  * @param nit NIT emisor
  * @param fh Fecha y Hora en formato yyyyMMddHHmmssSSS
  * @param sucursal
  * @param mod Modalidad
  * @param temision Tipo de Emision
  * @param cdf Codigo Documento Fiscal
  * @param tds Tipo Documento Sector
  * @param nf Numero de Factura
  * @param pos Punto de Venta
  * @return CUF Codigo Unico de Factura
  */
 public static String obtenerCUF(String nit, String fh, int sucursal, int mod, int temision, int cdf, int tds, int nf, int pos) {
  String cadena = "";

  /**
   * PASO 1 y PASO2 Completa con ceros cada campo y concatena todo en una
   * sola cadena
   */
  cadena += BigInteger.Parse(nit).ToString("D13");
  cadena += fh;
  cadena += sucursal.ToString("D4");
  cadena += mod;
  cadena += temision;
  cadena += cdf;
  cadena += tds.ToString("D2");
  cadena += nf.ToString("D8");
  cadena += pos.ToString("D4");

  /**
   * Paso 3 Obtiene modulo 11 y adjunta resultado a la cadena
   */
  String mod11 = calculaDigitoMod11(cadena, 1, 9, false);
  cadena += mod11;

  /**
   * paso 4 Aplica base16
   */
  BigInteger cuf = BigInteger.Parse(cadena);
  return cuf.ToString("X");
 }

 /**
  * @see https://impuestos.gob.bo/ ALGORITMO BASE 11 ? MÓDULO 11
  * Original en lenguaje java
  */
 public static String calculaDigitoMod11(String dado, int numDig, int limMult, bool x10) {
  int mult, soma, i, n, dig;
  if (!x10) {
   numDig = 1;
  }
  for (n = 1; n <= numDig; n++) {
   soma = 0;
   mult = 2;
   for (i = dado.Length - 1; i >= 1; i--) {
    soma += (mult * Int32.Parse(dado.Substring(i, 1)));

    if (++mult > limMult) {
     mult = 2;
    }
   }
   if (x10) {
    dig = ((soma * 10) % 11) % 10;
   } else {
    dig = soma % 11;
   }
   if (dig == 10) {
    dado
     += "1";
   }
   if (dig == 11) {
    dado
     += "0";
   }
   if (dig < 10) {
    dado += dig;
   }
  }
  return dado.Substring(dado.Length - numDig, 1);
 }

}

Ejecutando el código anterior obtenemos el Código Único de Factura:

CUF VB NET

De la misma forma que hicimos con java, utilizamos la «Batería de Pruebas de Generación de CUF» para probar el correcto funcionamiento de nuestro código:

CUF> 1.- 159FFE6FB1986A24BB32DBE5A2A34214B245A6A3 = 159FFE6FB1986A24BB32DBE5A2A34214B245A6A3 -> True
CUF> 2.- 159FFE6FB1986A24BB32EAB8592FA23EE2CA4D48 = 159FFE6FB1986A24BB32EAB8592FA23EE2CA4D48 -> True
CUF> 3.- 159FFE6FB1986A24BB32EAB857CFF35D787AF3E4 = 159FFE6FB1986A24BB32EAB857CFF35D787AF3E4 -> True
CUF> 4.- 159FFE6FB1986A24BB32ECD6730CF0AB8D2C1A89 = 159FFE6FB1986A24BB32ECD6730CF0AB8D2C1A89 -> True
CUF> 5.- 159FFE6FB1986A24BB32ECD671AD41CA22DCC125 = 159FFE6FB1986A24BB32ECD671AD41CA22DCC125 -> True
CUF> 6.- 159FFE6FB1986A24BB32ECD673141DD973A167C5 = 159FFE6FB1986A24BB32ECD673141DD973A167C5 -> True
CUF> 7.- 159FFE6FB1986A24BB32EEF48B8A9036CD3E8E61 = 159FFE6FB1986A24BB32EEF48B8A9036CD3E8E61 -> True
CUF> 8.- 159FFE6FB1986A24BB32F112A6D23600D0433506 = 159FFE6FB1986A24BB32F112A6D23600D0433506 -> True
CUF> 9.- 159FFE6FB1986A24BB32F112A572871F65F3DBA2 = 159FFE6FB1986A24BB32F112A572871F65F3DBA2 -> True
CUF> 10.- 159FFE6FB1986A24BB32F330C0AF846D7AA50240 = 159FFE6FB1986A24BB32F330C0AF846D7AA50240 -> True
CUF> 11.- 159FFE6FB1986A24BB32F330BF4FD58C1055A8E7 = 159FFE6FB1986A24BB32F330BF4FD58C1055A8E7 -> True
CUF> 12.- 159FFE6FB1986A24BB32F330C0B6B19B611A4F87 = 159FFE6FB1986A24BB32F330C0B6B19B611A4F87 -> True
CUF> 13.- 159FFE6FB1986A24BB32F54ED92D23F8BAB77628 = 159FFE6FB1986A24BB32F54ED92D23F8BAB77628 -> True
CUF> 14.- 159FFE6FB1986A24BB32F54EDA9400080B7C1CC8 = 159FFE6FB1986A24BB32F54EDA9400080B7C1CC8 -> True
CUF> 15.- 159FFE6FB1986A24BB32F54ED9345126A12CC364 = 159FFE6FB1986A24BB32F54ED9345126A12CC364 -> True
CUF> 16.- 159FFE6FB1986A24BB32F76CF4714E74B5DDEA09 = 159FFE6FB1986A24BB32F76CF4714E74B5DDEA09 -> True
CUF> 17.- 159FFE6FB1986A24BB32F76CF3119F934B8E90A5 = 159FFE6FB1986A24BB32F76CF3119F934B8E90A5 -> True
CUF> 18.- 159FFE6FB1986A24BB32F98B0E59455D4E933741 = 159FFE6FB1986A24BB32F98B0E59455D4E933741 -> True
CUF> 19.- 159FFE6FB1986A24BB32F98B0CEEEDFFF5F05DE6 = 159FFE6FB1986A24BB32F98B0CEEEDFFF5F05DE6 -> True
CUF> 20.- 159FFE6FB1986A24BB32FBA9283693C9F8F50486 = 159FFE6FB1986A24BB32FBA9283693C9F8F50486 -> True
CUF> 21.- 159FFE6FB1986A24BB32FBA926D6E4E88EA5AB22 = 159FFE6FB1986A24BB32FBA926D6E4E88EA5AB22 -> True
CUF> 22.- 159FFE6FB1986A24BB32FDC74213E236A356D1C7 = 159FFE6FB1986A24BB32FDC74213E236A356D1C7 -> True
CUF> 23.- 159FFE6FB1986A24BB32FDC740B4335539077863 = 159FFE6FB1986A24BB32FDC740B4335539077863 -> True
CUF> 24.- 159FFE6FB1986A24BB32FDC7421A3E357D7FBF04 = 159FFE6FB1986A24BB32FDC7421A3E357D7FBF04 -> True
CUF> 25.- 159FFE6FB1986A24BB32FFE55A90B092D71CE5A5 = 159FFE6FB1986A24BB32FFE55A90B092D71CE5A5 -> True
CUF> 26.- 159FFE6FB1986A24BB32FFE55C1B139497A28C43 = 159FFE6FB1986A24BB32FFE55C1B139497A28C43 -> True
CUF> 27.- 159FFE6FB1986A24BB32FFE55ABB64B32D5332E1 = 159FFE6FB1986A24BB32FFE55ABB64B32D5332E1 -> True
CUF> 28.- 159FFE6FB1986A24BB33020375F8620142045984 = 159FFE6FB1986A24BB33020375F8620142045984 -> True
CUF> 29.- 159FFE6FB1986A24BB3302037498B31FD7B50020 = 159FFE6FB1986A24BB3302037498B31FD7B50020 -> True
CUF> 30.- 159FFE6FB1986A24BB33020375FF8F2F2879A6C2 = 159FFE6FB1986A24BB33020375FF8F2F2879A6C2 -> True
CUF> 31.- 159FFE6FB1986A24BB3304218E76018C8216CD67 = 159FFE6FB1986A24BB3304218E76018C8216CD67 -> True
CUF> 32.- 159FFE6FB1986A24BB3304218FDCDD9BD2DB7407 = 159FFE6FB1986A24BB3304218FDCDD9BD2DB7407 -> True
CUF> 33.- 159FFE6FB1986A24BB33063FA85DF8751ACC1AA1 = 159FFE6FB1986A24BB33063FA85DF8751ACC1AA1 -> True
CUF> 34.- 159FFE6FB1986A24BB33063FA9BA2C087D3D4141 = 159FFE6FB1986A24BB33063FA9BA2C087D3D4141 -> True
CUF> 35.- 159FFE6FB1986A24BB33063FA85A7D2712EDE7E6 = 159FFE6FB1986A24BB33063FA85A7D2712EDE7E6 -> True
CUF> 36.- 159FFE6FB1986A24BB33085DC3A222F115F28E82 = 159FFE6FB1986A24BB33085DC3A222F115F28E82 -> True
CUF> 37.- 159FFE6FB1986A24BB33085DC237CB93BD4FB527 = 159FFE6FB1986A24BB33085DC237CB93BD4FB527 -> True
CUF> 38.- 159FFE6FB1986A24BB330A7BDD7F715DC0545BC3 = 159FFE6FB1986A24BB330A7BDD7F715DC0545BC3 -> True
CUF> 39.- 159FFE6FB1986A24BB330A7BDC1FC27C56050261 = 159FFE6FB1986A24BB330A7BDC1FC27C56050261 -> True
CUF> 40.- 159FFE6FB1986A24BB330A7BDD7BF60FB8762901 = 159FFE6FB1986A24BB330A7BDD7BF60FB8762901 -> True
CUF> 41.- 159FFE6FB1986A24BB330C99F5FD10E90066CFA2 = 159FFE6FB1986A24BB330C99F5FD10E90066CFA2 -> True
CUF> 42.- 159FFE6FB1986A24BB330C99F763ECF8512B7642 = 159FFE6FB1986A24BB330C99F763ECF8512B7642 -> True
CUF> 43.- 159FFE6FB1986A24BB330C99F5F9959AF8889CE9 = 159FFE6FB1986A24BB330C99F5F9959AF8889CE9 -> True
CUF> 44.- 159FFE6FB1986A24BB330EB811413B64FB8D4385 = 159FFE6FB1986A24BB330EB811413B64FB8D4385 -> True
CUF> 45.- 159FFE6FB1986A24BB330EB80FE18C83913DEA21 = 159FFE6FB1986A24BB330EB80FE18C83913DEA21 -> True
CUF> 46.- 159FFE6FB1986A24BB3310D62B1E89D1A5EF10C6 = 159FFE6FB1986A24BB3310D62B1E89D1A5EF10C6 -> True
CUF> 47.- 159FFE6FB1986A24BB3310D629BE09C12F535763 = 159FFE6FB1986A24BB3310D629BE09C12F535763 -> True
CUF> 48.- 159FFE6FB1986A24BB3312F44505AF8B3257FE01 = 159FFE6FB1986A24BB3312F44505AF8B3257FE01 -> True
CUF> 49.- 159FFE6FB1986A24BB3312F4439B582DD9B524A4 = 159FFE6FB1986A24BB3312F4439B582DD9B524A4 -> True
CUF> 50.- 159FFE6FB1986A24BB3315125EE2FDF7DCB9CB42 = 159FFE6FB1986A24BB3315125EE2FDF7DCB9CB42 -> True

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Procedimientos Almacenados: Parámetros INOUT

Procedimientos Almacenados: Parámetros INOUT

En post anteriores vimos lo que son los parámetros IN y los parámetros OUT pero existe otro tipo de parámetro que es la...

Borrar código protegido en Netbeans

Borrar código protegido en Netbeans

Cuando programamos visualmente desde Netbeans, el IDE nos ayuda mucho al generar rapidamente código predefinido, sin emb...

Archivos binarios en Java (Lectura/Escritura)

Archivos binarios en Java (Lectura/Escritura)

Según Santa Wikipedia: «Un archivo binario es un archivo informático que contiene información de cualquier tipo codifica...

SharedPreferences: Preferencias de Usuario

SharedPreferences: Preferencias de Usuario

En este post construiremos paso a paso un SharedPreferences más conocido en español como «Preferencias de Usuario«, esta...

+834 programas totalmente gratis para descarga

+834 programas totalmente gratis para descarga

Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...

Generador de código para Netbeans

Generador de código para Netbeans

El IDE Netbeans al igual que Eclipse :), nos permite personalizar el espacio de trabajo y añadir funcionalidades que nos...

2 comentarios en “Código Único de Factura en C Sharp”

  1. Daniel Julio Valdivia Choque dice:

    Muchas gracias por el aporte un favor sera que puedes compartir el código en visual basic

    1. Mouse dice:

      net o vb6

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Existe una gran cantidad de contenido sobre productividad, trucos, consejos y trabajo y más. Pero, ¿Qué pasa con esos mo...

En este post te enseño a usar una herramienta de Inteligencia Artificial para animar tus fotografias y esto completament...

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

Herramientas

Generador de Enlaces a Whatsapp