obtenerMinutos (w, x, y, z) = (y*60)+z
diff x y | (obtenerMinutos x) > (obtenerMinutos y) = (obtenerMinutos x) - (obtenerMinutos y)
| otherwise = (obtenerMinutos y
) - (obtenerMinutos x
)
obtenerDiaTrabajado (w, x, y, z) = x
obtenerNombre (w, x, y, z) = w
obtListaDiasTrabajados [] _ = []
obtListaDiasTrabajados (x:xs) y | obtenerNombre x == y = (obtenerDiaTrabajado x):obtListaDiasTrabajados xs y
intermedio x y | x < (y-1) = (x+1) : intermedio (x+1) y
listaDesde 0 = []
listaDesde x = x:listaDesde(x-1)
ultimo [x] = x
ultimo (x:xs) = ultimo xs
noElUltimo [x] = []
noElUltimo (x:xs) = x:noElUltimo xs
invertir [] = []
invertir x = (ultimo x):(invertir(noElUltimo x))
hastaTreinta x | x <= 30 = x:hastaTreinta (x+1)
ausencias x y = listaAusencias (obtListaDiasTrabajados x y)
listaAusencias
:: [Int] -> [Int]listaAusencias [] = []
--listaAusencias [x]:[] = hastaTreinta x
--listaAusencias x = intermedios (0:x)
jornal x
| (x
<8) && (odd x
) = 15 | (x
>=8) && (even x
) = 15
presentismo x
| (length x
)<3 = 150
puntualidad x y | (llegoTarde (obtHHMM x y) (obtHMIngreso horarioIngreso y)) == True = 0
llegoTarde [] _ = True
llegoTarde
(x:xs
) y
| abs(x
-y
) > 20 = False
obtHHMM [] _ = []
obtHHMM (x:xs) y | obtenerNombre x == y = ((obtHora x)* 60 + obtMin x): obtHHMM xs y
obtHora (w, x, y, z) = y
obtMin (w, x, y, z) = z
obtHMIngreso [] _ = 0
obtHMIngreso (x:xs) y | obtenerNombre2 x == y = obtMinTresUpla x
obtMinTresUpla (x,y,z) = (y*60)+z
obtenerNombre2 (x,y,z) = x
horarioIngreso = [("pepe", 9, 0),("marcelo", 10, 15),("dario", 7, 30)]
enero = 1
febrero = 2
marzo = 3
abril = 4
mayo= 5
junio = 6
julio = 7
agosto = 8
septiembre = 9
octubre = 10
noviembre = 11
diciembre = 12
sectores = [("administrativo", ["contaduria", "facturacion", "proveedores"])]
--getRol::[(String, [String])] -> String -> [String]
--getRol [] _ = []
--getRol (x:xs) y | (obtNomRol x) == y = (obtRoles x): getRol xs y
-- | otherwise = getRol xs y
obtNomRol (x,y) = x
obtRoles (x,y) = y
getNomSector (x,y) = x
getSectores (x,y) = y
--getSector:: [(String, [String])] -> [String] -> [String]
--getSector (x:xs) (y:ys) | (getNomSector x) == y = (getSectores x):(getSector xs ys)
-- | otherwise = getSector xs (y:ys)
quitaRepetidos _ [] = []
quitaRepetidos x (y:ys) | x/=y = y:quitaRepetidos x ys
procesarSectores []= []
procesarSectores (x:xs) = x:procesarSectores(quitaRepetidos x xs)
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKb2J0ZW5lck1pbnV0b3MgOjogKFN0cmluZywgSW50LCBJbnQsIEludCkgLT4gSW50Cm9idGVuZXJNaW51dG9zICh3LCB4LCB5LCB6KSA9ICh5KjYwKSt6CgpkaWZmIDo6IChTdHJpbmcsIEludCwgSW50LCBJbnQpIC0+IChTdHJpbmcsIEludCwgSW50LCBJbnQpIC0+IEludApkaWZmIHggeSB8IChvYnRlbmVyTWludXRvcyB4KSA+IChvYnRlbmVyTWludXRvcyB5KSA9IChvYnRlbmVyTWludXRvcyB4KSAtIChvYnRlbmVyTWludXRvcyB5KQogICAgICAgICB8IG90aGVyd2lzZSA9IChvYnRlbmVyTWludXRvcyB5KSAtIChvYnRlbmVyTWludXRvcyB4KQoKCm9idGVuZXJEaWFUcmFiYWphZG8gOjogKFN0cmluZywgSW50LEludCxJbnQpIC0+IEludApvYnRlbmVyRGlhVHJhYmFqYWRvICh3LCB4LCB5LCB6KSA9IHgKCm9idGVuZXJOb21icmUgOjogKFN0cmluZywgSW50LEludCxJbnQpIC0+IFN0cmluZwpvYnRlbmVyTm9tYnJlICh3LCB4LCB5LCB6KSA9IHcKCm9idExpc3RhRGlhc1RyYWJhamFkb3MgOjogWyhTdHJpbmcsIEludCwgSW50LCBJbnQpXSAtPiBTdHJpbmcgLT4gW0ludF0Kb2J0TGlzdGFEaWFzVHJhYmFqYWRvcyBbXSBfID0gW10Kb2J0TGlzdGFEaWFzVHJhYmFqYWRvcyAoeDp4cykgeSB8IG9idGVuZXJOb21icmUgeCA9PSB5ID0gKG9idGVuZXJEaWFUcmFiYWphZG8geCk6b2J0TGlzdGFEaWFzVHJhYmFqYWRvcyB4cyB5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvdGhlcndpc2UgICAgICAgICAgICA9IG9idExpc3RhRGlhc1RyYWJhamFkb3MgeHMgeQoKaW50ZXJtZWRpbyA6OiBJbnQgLT4gSW50IC0+W0ludF0KaW50ZXJtZWRpbyB4IHkgfCB4IDwgKHktMSkgPSAoeCsxKSA6IGludGVybWVkaW8gKHgrMSkgeQogICAgICAgICAgICAgICAgfCBvdGhlcndpc2UgPSBbXQoKCmxpc3RhRGVzZGUgOjogSW50IC0+IFtJbnRdCmxpc3RhRGVzZGUgMCA9IFtdCmxpc3RhRGVzZGUgeCA9IHg6bGlzdGFEZXNkZSh4LTEpCgoKdWx0aW1vIDo6IFtJbnRdIC0+IEludAp1bHRpbW8gW3hdID0geAp1bHRpbW8gKHg6eHMpID0gdWx0aW1vIHhzCgpub0VsVWx0aW1vIDo6IFtJbnRdIC0+IFtJbnRdCm5vRWxVbHRpbW8gW3hdID0gW10Kbm9FbFVsdGltbyAoeDp4cykgPSB4Om5vRWxVbHRpbW8geHMKCmludmVydGlyIDo6IFtJbnRdIC0+IFtJbnRdCmludmVydGlyIFtdID0gW10KaW52ZXJ0aXIgeCA9ICh1bHRpbW8geCk6KGludmVydGlyKG5vRWxVbHRpbW8geCkpIAoKaGFzdGFUcmVpbnRhOjogSW50IC0+IFtJbnRdCmhhc3RhVHJlaW50YSB4IHwgeCA8PSAzMCA9IHg6aGFzdGFUcmVpbnRhICh4KzEpCiAgICAgICAgICAgICAgIHwgb3RoZXJ3aXNlID0gW10gCgoKYXVzZW5jaWFzOjogWyhTdHJpbmcsIEludCwgSW50LCBJbnQpXSAtPiBTdHJpbmcgLT4gW0ludF0KYXVzZW5jaWFzIHggeSA9IGxpc3RhQXVzZW5jaWFzIChvYnRMaXN0YURpYXNUcmFiYWphZG9zIHggeSkKCmxpc3RhQXVzZW5jaWFzOjogW0ludF0gLT4gW0ludF0KbGlzdGFBdXNlbmNpYXMgW10gPSBbXQotLWxpc3RhQXVzZW5jaWFzIFt4XTpbXSA9IGhhc3RhVHJlaW50YSB4Ci0tbGlzdGFBdXNlbmNpYXMgeCA9IGludGVybWVkaW9zICgwOngpCgpqb3JuYWw6OiBJbnRlZ2VyIC0+IEludGVnZXIKam9ybmFsIHggfCAoeDw4KSAmJiAob2RkIHgpID0gMTUKICAgICAgICAgfCAoeD49OCkgJiYgKGV2ZW4geCkgPSAxNQogICAgICAgICB8IG90aGVyd2lzZSA9IDEzCgpwcmVzZW50aXNtbzo6IFtJbnRdIC0+IEludApwcmVzZW50aXNtbyB4IHwgKGxlbmd0aCB4KTwzID0gMTUwCiAgICAgICAgICAgICAgfCBvdGhlcndpc2UgPSAwCgpwdW50dWFsaWRhZCA6OiBbKFN0cmluZywgSW50LCBJbnQsIEludCldIC0+IFN0cmluZyAtPiBJbnQKcHVudHVhbGlkYWQgeCB5IHwgKGxsZWdvVGFyZGUgKG9idEhITU0geCB5KSAob2J0SE1JbmdyZXNvIGhvcmFyaW9JbmdyZXNvIHkpKSAgPT0gVHJ1ZSA9IDAKICAgICAgICAgICAgICAgIHwgb3RoZXJ3aXNlID0gMTAwCgpsbGVnb1RhcmRlOjpbSW50XSAtPiBJbnQgLT4gQm9vbApsbGVnb1RhcmRlIFtdIF8gPSBUcnVlCmxsZWdvVGFyZGUgKHg6eHMpIHkgfCBhYnMoeC15KSA+IDIwID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICB8IG90aGVyd2lzZSA9IGxsZWdvVGFyZGUgeHMgeQoKb2J0SEhNTTo6WyhTdHJpbmcsIEludCwgSW50LCBJbnQpXSAtPiBTdHJpbmcgLT4gW0ludF0Kb2J0SEhNTSBbXSBfID0gW10Kb2J0SEhNTSAoeDp4cykgeSB8IG9idGVuZXJOb21icmUgeCA9PSB5ID0gKChvYnRIb3JhIHgpKiA2MCArIG9idE1pbiB4KTogb2J0SEhNTSB4cyB5CiAgICAgICAgICAgICAgICAgfCBvdGhlcndpc2UgPSBvYnRISE1NIHhzIHkKCm9idEhvcmEgOjogKFN0cmluZywgSW50LEludCxJbnQpIC0+IEludApvYnRIb3JhICh3LCB4LCB5LCB6KSA9IHkKCm9idE1pbiA6OiAoU3RyaW5nLCBJbnQsSW50LEludCkgLT4gSW50Cm9idE1pbiAodywgeCwgeSwgeikgPSB6CgpvYnRITUluZ3Jlc28gOjogWyhTdHJpbmcsIEludCwgSW50KV0gLT4gU3RyaW5nIC0+IEludApvYnRITUluZ3Jlc28gW10gXyA9IDAKb2J0SE1JbmdyZXNvICh4OnhzKSB5IHwgb2J0ZW5lck5vbWJyZTIgeCA9PSB5ID0gb2J0TWluVHJlc1VwbGEgeAogICAgICAgICAgICAgICAgICAgICAgfCBvdGhlcndpc2UgPSBvYnRITUluZ3Jlc28geHMgeQoKb2J0TWluVHJlc1VwbGE6OiAoU3RyaW5nLCBJbnQsIEludCkgLT4gSW50Cm9idE1pblRyZXNVcGxhICh4LHkseikgPSAoeSo2MCkregoKb2J0ZW5lck5vbWJyZTI6OiAoU3RyaW5nLCBJbnQsIEludCkgLT4gU3RyaW5nCm9idGVuZXJOb21icmUyICh4LHkseikgPSB4Cgpob3JhcmlvSW5ncmVzbyA6OiBbKFN0cmluZywgSW50LCBJbnQpXQpob3JhcmlvSW5ncmVzbyA9IFsoInBlcGUiLCA5LCAwKSwoIm1hcmNlbG8iLCAxMCwgMTUpLCgiZGFyaW8iLCA3LCAzMCldCgplbmVybyA9IDEKZmVicmVybyA9IDIKbWFyem8gPSAzCmFicmlsID0gNAptYXlvPSA1Cmp1bmlvID0gNgpqdWxpbyA9IDcKYWdvc3RvID0gOApzZXB0aWVtYnJlID0gOQpvY3R1YnJlID0gMTAKbm92aWVtYnJlID0gMTEKZGljaWVtYnJlID0gMTIKCnNlY3RvcmVzOjogWyhTdHJpbmcsIFtTdHJpbmddKV0Kc2VjdG9yZXMgPSBbKCJhZG1pbmlzdHJhdGl2byIsIFsiY29udGFkdXJpYSIsICJmYWN0dXJhY2lvbiIsICJwcm92ZWVkb3JlcyJdKV0KCi0tZ2V0Um9sOjpbKFN0cmluZywgW1N0cmluZ10pXSAtPiBTdHJpbmcgLT4gW1N0cmluZ10KLS1nZXRSb2wgW10gXyA9IFtdCi0tZ2V0Um9sICh4OnhzKSB5IHwgKG9idE5vbVJvbCB4KSA9PSB5ID0gKG9idFJvbGVzIHgpOiBnZXRSb2wgeHMgeQotLSAgICAgICAgICAgICAgICB8IG90aGVyd2lzZSA9IGdldFJvbCB4cyB5CgoKb2J0Tm9tUm9sOjogKFN0cmluZywgW1N0cmluZ10pIC0+IFN0cmluZwpvYnROb21Sb2wgKHgseSkgPSB4CgpvYnRSb2xlczo6IChTdHJpbmcsIFtTdHJpbmddKSAtPiBbU3RyaW5nXQpvYnRSb2xlcyAoeCx5KSA9IHkKCmdldE5vbVNlY3Rvcjo6IChTdHJpbmcsIFtTdHJpbmddKSAtPiBTdHJpbmcKZ2V0Tm9tU2VjdG9yICh4LHkpID0geAoKZ2V0U2VjdG9yZXM6OiAgKFN0cmluZywgW1N0cmluZ10pIC0+IFtTdHJpbmddCmdldFNlY3RvcmVzICh4LHkpID0geQoKLS1nZXRTZWN0b3I6OiBbKFN0cmluZywgW1N0cmluZ10pXSAtPiBbU3RyaW5nXSAtPiBbU3RyaW5nXQotLWdldFNlY3RvciAoeDp4cykgKHk6eXMpIHwgKGdldE5vbVNlY3RvciB4KSA9PSB5ID0gKGdldFNlY3RvcmVzIHgpOihnZXRTZWN0b3IgeHMgeXMpCi0tICAgICAgICAgICAgICAgICAgICAgICAgfCBvdGhlcndpc2UgPSBnZXRTZWN0b3IgeHMgKHk6eXMpIAoKCnF1aXRhUmVwZXRpZG9zIDo6IFN0cmluZyAtPiBbU3RyaW5nXSAtPiBbU3RyaW5nXQpxdWl0YVJlcGV0aWRvcyBfIFtdID0gW10KcXVpdGFSZXBldGlkb3MgeCAoeTp5cykgfCB4Lz15ID0geTpxdWl0YVJlcGV0aWRvcyB4IHlzCiAgICAgICAgICAgICAgICAgICAgICAgIHwgb3RoZXJ3aXNlID0gcXVpdGFSZXBldGlkb3MgeCB5cwoKcHJvY2VzYXJTZWN0b3Jlczo6W1N0cmluZ10gLT4gW1N0cmluZ10KcHJvY2VzYXJTZWN0b3JlcyBbXT0gW10KcHJvY2VzYXJTZWN0b3JlcyAoeDp4cykgPSB4OnByb2Nlc2FyU2VjdG9yZXMocXVpdGFSZXBldGlkb3MgeCB4cykK