Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import webbrowser
- from string import Template
- from constantes import *
- from helpers import leer_archivo, mostrar_texto
- class ModeloDePresupuesto:
- # Datos comerciales
- titulo = "PRESUPUESTO"
- encabezado_nombre = "Eugenia Bahit"
- encabezado_web = "www.eugeniabahit.com.ar"
- encabezado_email = "mail@mail.com"
- fecha = FECHA_ACTUAL
- vencimiento = FECHA_CADUCIDAD
- # Datos impositivos
- ALICUOTA_IVA = 21
- # Propiedades relativas al formato
- html = TEMPLATE_HTML
- txt = TEMPLATE_TXT
- # Planes y servicios - Capítulo 3
- planes = ('corporativo', 'personal', 'mantenimiento')
- corporativo = ['Diseño Sitio Web corporativo', 7200]
- personal = ['Diseño Sitio Web básico', 4500]
- mantenimiento = ['Mantenimiento sitio Web (mensual)', 500]
- lista_precios = {'corporativo':corporativo,
- 'personal':personal,
- 'mantenimiento':mantenimiento}
- # Setear los datos del cliente
- def set_cliente(self):
- self.empresa = raw_input(EMPRESA)
- self.cliente = raw_input(NOMBRE_CLIENTE)
- # Seleccionar tipo de plan
- def seleccionar_plan(self):
- texto_a_mostrar = ELEGIR_PLAN
- codigo_plan = 0
- for plan in self.planes:
- texto_a_mostrar += '(%d)%s ' % (codigo_plan, plan)
- codigo_plan = codigo_plan + 1
- texto_a_mostrar += ": "
- elegir_plan = raw_input(texto_a_mostrar)
- # Capturando excepciones (Capítulo 5)
- try:
- elegir_plan = int(elegir_plan)
- self.plan = self.planes[elegir_plan]
- except (ValueError, IndexError):
- mostrar_texto(DATO_INCORRECTO)
- self.seleccionar_plan()
- else:
- datos_servicio = self.lista_precios[self.planes[elegir_plan]]
- self.servicio = datos_servicio[0]
- importe = datos_servicio[1]
- self.importe = float(importe)
- # Calcular IVA
- def calcular_iva(self):
- self.monto_iva = self.importe * self.ALICUOTA_IVA / 100
- # Calcula el monto total del presupuesto
- def calcular_neto(self):
- self.neto = self.importe + self.monto_iva
- # Armar numero de presupuesto
- def armar_numero_presupuesto(self):
- contador = open('contador.txt', 'r+')
- ultimo_num = int(contador.read())
- nuevo = ultimo_num + 1
- contador.seek(0)
- nuevo = str(nuevo)
- contador.write(nuevo)
- contador.close()
- self.numero_presupuesto = nuevo
- # Guardar presupuesto en archivo
- def guardar_presupuesto(self, txt, html):
- respuesta = raw_input(GUARDAR_ARCHIVO)
- # Si el usuario indica "n"
- if respuesta.lower() == 'n':
- mostrar_texto(txt)
- # Si en cambio el usuario indica "s"
- elif respuesta.lower() == 's':
- filename = 'presupuestos/' + self.numero_presupuesto + '.html'
- presupuesto = open(filename, 'w')
- presupuesto.write(html)
- presupuesto.close()
- mostrar_texto(CONFIRM_ARCHIVO_GUARDADO)
- self.mostrar_presupuesto(filename)
- # Sino
- else:
- mostrar_texto(OPCION_INCORRECTA)
- self.guardar_presupuesto(txt, html)
- # Mostrar presupuesto en navegador
- def mostrar_presupuesto(self, archivo):
- respuesta = raw_input(MOSTRAR_PRESUPUESTO)
- if respuesta.lower() == 's':
- webbrowser.open(BASE_DIR + "/" + archivo)
- # Armar el presupuesto
- def armar_presupuesto(self):
- """Esta función se encarga de armar todo el presupuesto"""
- self.armar_numero_presupuesto()
- txt = leer_archivo(self.txt)
- html = leer_archivo(self.html)
- # Armo un diccionario con todos los datos que utilizo en el template
- diccionario = dict(nombre=self.encabezado_nombre,
- web=self.encabezado_web,
- email=self.encabezado_email,
- titulo=self.titulo,
- numero=self.numero_presupuesto,
- fecha=self.fecha,
- empresa=self.empresa,
- cliente=self.cliente,
- plan=self.plan,
- servicio=self.servicio,
- precio=self.importe,
- iva=self.monto_iva,
- total=self.neto,
- limite=self.vencimiento)
- txt = Template(txt).safe_substitute(diccionario)
- html = Template(html).safe_substitute(diccionario)
- self.guardar_presupuesto(txt, html)
- # Método constructor
- def __init__(self):
- mostrar_texto(ENCABEZADO_MODULO)
- self.set_cliente()
- self.seleccionar_plan()
- self.calcular_iva()
- self.calcular_neto()
- self.armar_presupuesto()
- # Instanciar clase
- presupuesto = ModeloDePresupuesto()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement