Bienvenidos

Este blog es un espacio creado por Daptech S.R.L destinado a compartir nuestras experiencias en tecnología y resolución de problemas con la comunidad. Aquí podrá encontrar tutoriales, tips and tricks, howtos, resolución a problemas típicos y frecuentes. Todo estos conocimientos fueron adquiridos en el día a día del desarrollo de nuestras labores profesionales. Esperamos disfruten de leer los contenidos tanto o mas que nosotros al escribirlos. Los que hacemos daptech info@daptech.com.ar

Friday, March 30, 2012

Factura Electronica Digito Verificador codigo de barras

El siguiente fragmento de código se puede utilizar para calcular el Dígito verificador empleado para el código de barras de las Facturas Electrónicas de AFIP para Argentina.


Esperamos sea de utilidad

  1. /**
  2. *
  3. * @param txtCuit CUIT del EMISOR del comprobante sin guiones
  4. * @param txtCodComp codigo de comprobantes dos digitos
  5. * @param txtPtoVta punto de venta del comprobante 4 digitos
  6. * @param txtCae cae
  7. * @param txtVtoCae vencimiento del cae en formato yyyyMMdd
  8. * @return devuelve el string completo para utilizar en el codigo de barras
  9. */
  10. public String calculoDigitoVerificador(String txtCuit, String txtCodComp,
  11. String txtPtoVta, String txtCae, String txtVtoCae) {
  12. int i;
  13. String cod;
  14. String txtDigito;
  15. int impares;
  16. int pares;
  17. int total;
  18. int digito;
  19. String txtCodBarra;
  20. cod = txtCuit + txtCodComp + txtPtoVta + txtCae + txtVtoCae;
  21. txtCodBarra = cod;
  22. //
  23. // Ahora analizo la cadena de caracteres:
  24. // Tengo que sumar todos los caracteres impares y los pares
  25. pares = 0;
  26. impares = 0;
  27. for (i = 1; i < 40; i++) {
  28. //
  29. // If I Mod 2 = 0 Then
  30. if (i % 2 == 0) {
  31. // es par
  32. // Pares = Pares + CLng(Mid(Cod, I, 1))
  33. pares += Integer.valueOf(StringUtils.mid(cod, i - 1, 1));
  34. } else {
  35. // es impar
  36. // Impares = Impares + CLng(Mid(Cod, I, 1))
  37. impares += Integer.valueOf(StringUtils.mid(cod, i - 1, 1));
  38. }
  39. }
  40. //
  41. impares = 3 * impares;
  42. total = pares + impares;
  43. digito = 10 - (total % 10);
  44. //
  45. if (digito == 10) {
  46. digito = 0;
  47. }
  48. return cod + digito;
  49. }