package algoritmo import ( "strings" ) // Genera el CUF func GenerateCUF( nit string, fechaHora string, sucursal string, modalidad string, tipoEmision string, tipoFactura string, tipoDocumentoSector string, numeroFactura string, puntoVenta string, codigoControl string, ) string { // Rellenar todos los campos con ceros a la izquierda nit = completarConCeros(nit, 13) fechaHora = completarConCeros(fechaHora, 17) sucursal = completarConCeros(sucursal, 4) modalidad = completarConCeros(modalidad, 1) tipoEmision = completarConCeros(tipoEmision, 1) tipoFactura = completarConCeros(tipoFactura, 1) tipoDocumentoSector = completarConCeros(tipoDocumentoSector, 2) numeroFactura = completarConCeros(numeroFactura, 10) puntoVenta = completarConCeros(puntoVenta, 4) // Concatenar los 53 caracteres cadenaBase := nit + fechaHora + sucursal + modalidad + tipoEmision + tipoFactura + tipoDocumentoSector + numeroFactura + puntoVenta // Calcular dígito verificador y agregar al final verificador := calcularModulo11(cadenaBase) cadenaCompleta := cadenaBase + verificador // Convertir a base 16 cadenaHex := convertirABase16(cadenaCompleta) // Concatenar con el código de control (CUFD) cuf := cadenaHex + strings.ToUpper(codigoControl) return cuf }