commit 6a94180d9dc94bfe7a1a878574b48158a20c2b9a Author: Josue Gomez Date: Thu Jan 31 19:10:33 2019 -0600 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/prescalc b/prescalc new file mode 100755 index 0000000..f5470f4 --- /dev/null +++ b/prescalc @@ -0,0 +1,124 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import sys +import datetime +from dateutil.relativedelta import relativedelta + +#~~~~~~~~~~~~~~~~~~~~~~~DOCUMENTACION~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +if len(sys.argv)>1: + if sys.argv[1] == '--help': + print('esta es la ayuda:') + print('prescalc 60000->(monto_solicitado)[obligatorio] 18->(plazo_solicitado)[obligatorio] 5:5000->(pago_aplicado_en_cuota_No:monto_del_pago)[opcional] ') + sys.exit() +else: + print('Debe ingresar argumentos. \n prescalc --help') + sys.exit() + + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +vReqAmount = float(sys.argv[1]) +vReqTime = int(sys.argv[2]) + +#constant 8% Anual Interes +cAi = float(8) + +vInFee = int() +vXtraPay = float() +if len(sys.argv)>3: + vArgvs = sys.argv[3].split(':') + vInFee = vArgvs[0] + vXtraPay = float(vArgvs[1]) + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +def calculate(pAmount,pReqTime): + + #interes a aplicar al prestamo + rIm = float((cAi/12)*pReqTime) + + #Total a Pagar + rTotal = pAmount*(rIm/100)+pAmount + + #Cuota con Interes + rQTotal = rTotal/pReqTime + + #Cuota sin interes + rQuota = pAmount/pReqTime + + #Interes de cuota + rQInteres = rQTotal-rQuota + + return rIm, rTotal, rQTotal, rQuota, rQInteres + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +def main(): + + vIm, vTotal, vQTotal, vQuota, vQInteres = calculate(vReqAmount,vReqTime) + + print('{0:_^70}'.format('')) + print('|{0:^68}|'.format('')) + print('|{0:^68}|'.format('CALCULADORA DE PRESTAMO (interes simple)')) + vDisp = 'Interes anual {0:.0f}%'.format(cAi) + print('|{0:^68}|'.format(vDisp)) + print('|{0:_^68}|'.format('')) + + printStr = [] + printStr.append('Monto solicitado: C${0:,.2f} plazo:{1} meses'.format(vReqAmount,vReqTime)) + printStr.append('Interes de Prestamo {0:.2f}%'.format(vIm)) + printStr.append('Cuota mensual sin interes C${0:,.2f}'.format(vQuota)) + printStr.append('Interes mensual de prestamo C${0:,.2f}'.format(vQInteres)) + printStr.append('Cuota total C${0:,.2f}'.format(vQTotal)) + printStr.append('Total a Pagar C${0:,.2f}'.format(vTotal)) + + print('|{0:^68}|'.format('')) + for line in printStr: + print('|{0:^68}|'.format(line)) + + print('|{0:_^68}|'.format('')) + print('|{0:^68}|'.format('')) + + print('|{0:^68}|'.format('TABLA DE PAGOS')) + + print('|{0:_^68}|'.format('')) + print('|{0:^9}|{0:^9}|{0:^14}|{0:^17}|{0:^15}|'.format('')) + print('|{0:^9}|{1:^9}|{2:^14}|{3:^17}|{4:^15}|'.format('Periodo','Fecha','Pago Interes','Abono a Capital','Saldo Capital')) + print('|{0:_^9}|{0:_^9}|{0:_^14}|{0:_^17}|{0:_^15}|'.format('')) + + vFec = datetime.datetime.now() + + #retroceder un mes + #vFec = vFec + relativedelta(months=-1) + + print('|{0:^9}|{0:^9}|{0:^14}|{0:^17}|{0:^15}|'.format('')) + + vSaldoCapEndLoop=vReqAmount + for period in range(1,(vReqTime+1)): + vPayDt = vFec + relativedelta(months=period) + + + vSaldoCap = vSaldoCapEndLoop-vQuota + if int(vSaldoCap) < 0: + vQuota = vSaldoCap*-1 + vSaldoCap = 0 + print('|{0:^9}| {1:%m/%Y} |{2:>12,.2f} |{3:>15,.2f} |{4:>13,.2f} |'.format(period,vPayDt,vQInteres,vQuota,vSaldoCap)) + break + else: + print('|{0:^9}| {1:%m/%Y} |{2:>12,.2f} |{3:>15,.2f} |{4:>13,.2f} |'.format(period,vPayDt,vQInteres,vQuota,vSaldoCap)) + + #Pagos Extraordinarios + if vInFee and int(vInFee) == period: + vSaldoCap = vSaldoCap-vXtraPay + print('| {0:^10}| {1:%m/%Y} |{2:>12} |{3:>15,.2f} |{4:>13,.2f} |'.format('∟X',vPayDt,'',vXtraPay,vSaldoCap)) + + vSaldoCapEndLoop = vSaldoCap + + print('|{0:_^9}|{0:_^9}|{0:_^14}|{0:_^17}|{0:_^15}|'.format('')) + + print('') + +if __name__ == "__main__": + main()